| Index: chrome/browser/ui/browser.cc
|
| diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
|
| index 74ec6ee1281affc118048725c48db01be091ab92..2257f0eb63ed77ac1ed7dee4c2555400b0c84119 100644
|
| --- a/chrome/browser/ui/browser.cc
|
| +++ b/chrome/browser/ui/browser.cc
|
| @@ -69,6 +69,7 @@
|
| #include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h"
|
| #include "chrome/browser/tabs/tab_finder.h"
|
| #include "chrome/browser/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/browser_tab_restore_service_delegate.h"
|
| #include "chrome/browser/ui/find_bar/find_bar.h"
|
| #include "chrome/browser/ui/find_bar/find_bar_controller.h"
|
| #include "chrome/browser/ui/find_bar/find_tab_helper.h"
|
| @@ -206,7 +207,10 @@ Browser::Browser(Type type, Profile* profile)
|
| block_command_execution_(false),
|
| last_blocked_command_id_(-1),
|
| last_blocked_command_disposition_(CURRENT_TAB),
|
| - pending_web_app_action_(NONE) {
|
| + pending_web_app_action_(NONE),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(
|
| + tab_restore_service_delegate_(
|
| + new BrowserTabRestoreServiceDelegate(this))) {
|
| registrar_.Add(this, NotificationType::SSL_VISIBLE_STATE_CHANGED,
|
| NotificationService::AllSources());
|
| registrar_.Add(this, NotificationType::EXTENSION_UPDATE_DISABLED,
|
| @@ -299,7 +303,7 @@ Browser::~Browser() {
|
|
|
| TabRestoreService* tab_restore_service = profile()->GetTabRestoreService();
|
| if (tab_restore_service)
|
| - tab_restore_service->BrowserClosed(this);
|
| + tab_restore_service->BrowserClosed(tab_restore_service_delegate());
|
|
|
| encoding_auto_detect_.Destroy();
|
| printing_enabled_.Destroy();
|
| @@ -894,8 +898,8 @@ void Browser::OnWindowClosing() {
|
| session_service->WindowClosing(session_id());
|
|
|
| TabRestoreService* tab_restore_service = profile()->GetTabRestoreService();
|
| - if (tab_restore_service)
|
| - tab_restore_service->BrowserClosing(this);
|
| + if (tab_restore_service && type() == TYPE_NORMAL && tab_count())
|
| + tab_restore_service->BrowserClosing(tab_restore_service_delegate());
|
|
|
| // TODO(sky): convert session/tab restore to use notification.
|
| NotificationService::current()->Notify(
|
| @@ -966,6 +970,10 @@ void Browser::SelectTabContentsAt(int index, bool user_gesture) {
|
| tab_handler_->GetTabStripModel()->SelectTabContentsAt(index, user_gesture);
|
| }
|
|
|
| +bool Browser::IsTabPinned(int index) const {
|
| + return tabstrip_model()->IsTabPinned(index);
|
| +}
|
| +
|
| void Browser::CloseAllTabs() {
|
| tab_handler_->GetTabStripModel()->CloseAllTabs();
|
| }
|
| @@ -1456,7 +1464,7 @@ void Browser::RestoreTab() {
|
| if (!service)
|
| return;
|
|
|
| - service->RestoreMostRecentEntry(this);
|
| + service->RestoreMostRecentEntry(tab_restore_service_delegate());
|
| }
|
|
|
| void Browser::WriteCurrentURLToClipboard() {
|
| @@ -2569,7 +2577,8 @@ void Browser::CreateHistoricalTab(TabContentsWrapper* contents) {
|
| // We only create historical tab entries for tabbed browser windows.
|
| if (CanSupportWindowFeature(FEATURE_TABSTRIP)) {
|
| profile()->GetTabRestoreService()->CreateHistoricalTab(
|
| - &contents->controller());
|
| + &contents->controller(),
|
| + tab_handler_->GetTabStripModel()->GetIndexOfTabContents(contents));
|
| }
|
| }
|
|
|
|
|