Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7293)

Unified Diff: chrome/browser/ui/browser.cc

Issue 10117016: Implementation for switching between recently used tabs using ctrl tilde or quoteleft. Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Uploaded as per comments Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698