Index: chrome/browser/ui/browser.cc |
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc |
index 259099284eeda44650e8e3a86d02cd21445b61d3..664dd87388270f563263b9e6b13114e1a19b718e 100644 |
--- a/chrome/browser/ui/browser.cc |
+++ b/chrome/browser/ui/browser.cc |
@@ -130,6 +130,7 @@ |
#include "chrome/browser/ui/tabs/dock_info.h" |
#include "chrome/browser/ui/tabs/tab_finder.h" |
#include "chrome/browser/ui/tabs/tab_menu_model.h" |
+#include "chrome/browser/ui/tabs/tab_mru_list_manager.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/browser/ui/web_applications/web_app_ui.h" |
#include "chrome/browser/ui/webui/feedback_ui.h" |
@@ -347,6 +348,8 @@ Browser::Browser(Type type, Profile* profile) |
window_(NULL), |
ALLOW_THIS_IN_INITIALIZER_LIST( |
tab_strip_model_(new TabStripModel(this, profile))), |
+ ALLOW_THIS_IN_INITIALIZER_LIST( |
sky
2012/05/29 19:48:27
No need for ALLOW_THIS_IN_INITIALIAZER_LIST here.
NaveenBobbili (Motorola)
2012/06/05 05:34:16
Done.
|
+ tab_mru_list_manager_(new TabMRUListManager())), |
command_updater_(this), |
app_type_(APP_TYPE_HOST), |
chrome_updater_factory_(this), |
@@ -374,6 +377,7 @@ Browser::Browser(Type type, Profile* profile) |
bookmark_bar_state_(BookmarkBar::HIDDEN), |
window_has_shown_(false) { |
tab_strip_model_->AddObserver(this); |
+ tab_strip_model_->AddObserver(tab_mru_list_manager_.get()); |
sky
2012/05/29 19:48:28
TabMRUListManager should take care of adding/remov
NaveenBobbili (Motorola)
2012/06/05 05:34:16
Done.
|
toolbar_model_.reset(new ToolbarModel(toolbar_model_delegate_.get())); |
@@ -453,6 +457,7 @@ Browser::~Browser() { |
if (!browser_shutdown::ShuttingDownWithoutClosingBrowsers()) |
DCHECK(tab_strip_model_->empty()); |
tab_strip_model_->RemoveObserver(this); |
+ tab_strip_model_->RemoveObserver(tab_mru_list_manager_.get()); |
BrowserList::RemoveBrowser(this); |
@@ -1417,7 +1422,9 @@ void Browser::CloseTab() { |
void Browser::SelectNextTab() { |
content::RecordAction(UserMetricsAction("SelectNextTab")); |
- tab_strip_model_->SelectNextTab(); |
+ TabContentsWrapper* contents = tab_mru_list_manager_->GetNextMRUTab(); |
sky
2012/05/29 19:48:28
Don't change selectnexttab.
NaveenBobbili (Motorola)
2012/06/05 05:34:16
This creeped in by mistake.Done
|
+ if (contents) |
+ tab_strip_model_->SelectNextTab(); |
} |
void Browser::SelectPreviousTab() { |
@@ -1461,6 +1468,13 @@ void Browser::SelectLastTab() { |
tab_strip_model_->SelectLastTab(); |
} |
+void Browser::SelectNextMRUTab() { |
+ content::RecordAction(UserMetricsAction("SelectNextMRUTab")); |
+ TabContentsWrapper* contents = tab_mru_list_manager_->GetNextMRUTab(); |
+ if (contents) |
+ ActivateTabAt(tab_strip_model_->GetIndexOfTabContents(contents), true); |
+} |
+ |
void Browser::DuplicateTab() { |
content::RecordAction(UserMetricsAction("Duplicate")); |
DuplicateContentsAt(active_index()); |
@@ -2574,6 +2588,7 @@ void Browser::ExecuteCommandWithDisposition( |
case IDC_SHOW_SYNC_SETUP: ShowSyncSetup(SyncPromoUI::SOURCE_MENU); |
break; |
case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(); break; |
+ case IDC_SELECT_NEXT_MRU_TAB: SelectNextMRUTab(); break; |
default: |
LOG(WARNING) << "Received Unimplemented Command: " << id; |
@@ -4079,6 +4094,8 @@ void Browser::InitCommandState() { |
command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_TAB, normal_window); |
command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_TAB, |
normal_window); |
+ command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_MRU_TAB, |
sky
2012/05/29 19:48:28
Only enable if enabled in about:flags.
NaveenBobbili (Motorola)
2012/06/05 05:34:16
Done.
|
+ normal_window); |
command_updater_.UpdateCommandEnabled(IDC_MOVE_TAB_NEXT, normal_window); |
command_updater_.UpdateCommandEnabled(IDC_MOVE_TAB_PREVIOUS, normal_window); |
command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_0, normal_window); |