Chromium Code Reviews| Index: chrome/browser/ui/browser.cc |
| diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc |
| index 259099284eeda44650e8e3a86d02cd21445b61d3..4292084d99e4b8119f8bcccbcf5f7184ff1feb7d 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" |
| @@ -374,7 +375,10 @@ Browser::Browser(Type type, Profile* profile) |
| bookmark_bar_state_(BookmarkBar::HIDDEN), |
| window_has_shown_(false) { |
| tab_strip_model_->AddObserver(this); |
| - |
| + if (CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableTabMRUSwitch)) { |
| + tab_mru_list_manager_.reset(new TabMRUListManager(tab_strip_model_.get())); |
| + } |
| toolbar_model_.reset(new ToolbarModel(toolbar_model_delegate_.get())); |
| registrar_.Add(this, content::NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, |
| @@ -1461,6 +1465,13 @@ void Browser::SelectLastTab() { |
| tab_strip_model_->SelectLastTab(); |
| } |
| +void Browser::SelectPreviousMRUTab() { |
| + content::RecordAction(UserMetricsAction("SelectPreviousMRUTab")); |
| + TabContentsWrapper* contents = tab_mru_list_manager_->GetPreviousMRUTab(); |
| + if (contents) |
| + ActivateTabAt(tab_strip_model_->GetIndexOfTabContents(contents), true); |
| +} |
| + |
| void Browser::DuplicateTab() { |
| content::RecordAction(UserMetricsAction("Duplicate")); |
| DuplicateContentsAt(active_index()); |
| @@ -2426,25 +2437,25 @@ void Browser::ExecuteCommandWithDisposition( |
| // declaration order in browser.h! |
| switch (id) { |
| // Navigation commands |
| - case IDC_BACK: GoBack(disposition); break; |
| - case IDC_FORWARD: GoForward(disposition); break; |
| - case IDC_RELOAD: Reload(disposition); break; |
| - case IDC_RELOAD_IGNORING_CACHE: ReloadIgnoringCache(disposition); break; |
| - case IDC_HOME: Home(disposition); break; |
| - case IDC_OPEN_CURRENT_URL: OpenCurrentURL(); break; |
| - case IDC_STOP: Stop(); break; |
| + case IDC_BACK: GoBack(disposition); break; |
| + case IDC_FORWARD: GoForward(disposition); break; |
| + case IDC_RELOAD: Reload(disposition); break; |
| + case IDC_RELOAD_IGNORING_CACHE: ReloadIgnoringCache(disposition); break; |
| + case IDC_HOME: Home(disposition); break; |
| + case IDC_OPEN_CURRENT_URL: OpenCurrentURL(); break; |
| + case IDC_STOP: Stop(); break; |
| // Window management commands |
| - case IDC_NEW_WINDOW: NewWindow(); break; |
| - case IDC_NEW_INCOGNITO_WINDOW: NewIncognitoWindow(); break; |
| - case IDC_CLOSE_WINDOW: CloseWindow(); break; |
| - case IDC_NEW_TAB: NewTab(); break; |
| - case IDC_CLOSE_TAB: CloseTab(); break; |
| - case IDC_SELECT_NEXT_TAB: SelectNextTab(); break; |
| - case IDC_SELECT_PREVIOUS_TAB: SelectPreviousTab(); break; |
| - case IDC_TABPOSE: OpenTabpose(); break; |
| - case IDC_MOVE_TAB_NEXT: MoveTabNext(); break; |
| - case IDC_MOVE_TAB_PREVIOUS: MoveTabPrevious(); break; |
| + case IDC_NEW_WINDOW: NewWindow(); break; |
| + case IDC_NEW_INCOGNITO_WINDOW: NewIncognitoWindow(); break; |
| + case IDC_CLOSE_WINDOW: CloseWindow(); break; |
| + case IDC_NEW_TAB: NewTab(); break; |
| + case IDC_CLOSE_TAB: CloseTab(); break; |
| + case IDC_SELECT_NEXT_TAB: SelectNextTab(); break; |
| + case IDC_SELECT_PREVIOUS_TAB: SelectPreviousTab(); break; |
| + case IDC_TABPOSE: OpenTabpose(); break; |
| + case IDC_MOVE_TAB_NEXT: MoveTabNext(); break; |
| + case IDC_MOVE_TAB_PREVIOUS: MoveTabPrevious(); break; |
| case IDC_SELECT_TAB_0: |
| case IDC_SELECT_TAB_1: |
| case IDC_SELECT_TAB_2: |
| @@ -2452,29 +2463,29 @@ void Browser::ExecuteCommandWithDisposition( |
| case IDC_SELECT_TAB_4: |
| case IDC_SELECT_TAB_5: |
| case IDC_SELECT_TAB_6: |
| - case IDC_SELECT_TAB_7: SelectNumberedTab(id - IDC_SELECT_TAB_0); |
| + case IDC_SELECT_TAB_7: SelectNumberedTab(id - IDC_SELECT_TAB_0); |
| break; |
| - case IDC_SELECT_LAST_TAB: SelectLastTab(); break; |
| - case IDC_DUPLICATE_TAB: DuplicateTab(); break; |
| - case IDC_RESTORE_TAB: RestoreTab(); break; |
| - case IDC_COPY_URL: WriteCurrentURLToClipboard(); break; |
| - case IDC_SHOW_AS_TAB: ConvertPopupToTabbedBrowser(); break; |
| - case IDC_FULLSCREEN: ToggleFullscreenMode(); break; |
| + case IDC_SELECT_LAST_TAB: SelectLastTab(); break; |
| + case IDC_DUPLICATE_TAB: DuplicateTab(); break; |
| + case IDC_RESTORE_TAB: RestoreTab(); break; |
| + case IDC_COPY_URL: WriteCurrentURLToClipboard(); break; |
| + case IDC_SHOW_AS_TAB: ConvertPopupToTabbedBrowser(); break; |
| + case IDC_FULLSCREEN: ToggleFullscreenMode(); break; |
| #if defined(OS_MACOSX) |
| - case IDC_PRESENTATION_MODE: TogglePresentationMode(); break; |
| + case IDC_PRESENTATION_MODE: TogglePresentationMode(); break; |
| #endif |
| - case IDC_EXIT: Exit(); break; |
| + case IDC_EXIT: Exit(); break; |
| // Page-related commands |
| - case IDC_SAVE_PAGE: SavePage(); break; |
| - case IDC_BOOKMARK_PAGE: BookmarkCurrentPage(); break; |
| - case IDC_BOOKMARK_ALL_TABS: BookmarkAllTabs(); break; |
| - case IDC_VIEW_SOURCE: ViewSelectedSource(); break; |
| - case IDC_EMAIL_PAGE_LOCATION: EmailPageLocation(); break; |
| - case IDC_PRINT: Print(); break; |
| - case IDC_ADVANCED_PRINT: AdvancedPrint(); break; |
| - case IDC_CHROME_TO_MOBILE_PAGE: ShowChromeToMobileBubble(); break; |
| - case IDC_ENCODING_AUTO_DETECT: ToggleEncodingAutoDetect(); break; |
| + case IDC_SAVE_PAGE: SavePage(); break; |
| + case IDC_BOOKMARK_PAGE: BookmarkCurrentPage(); break; |
| + case IDC_BOOKMARK_ALL_TABS: BookmarkAllTabs(); break; |
| + case IDC_VIEW_SOURCE: ViewSelectedSource(); break; |
| + case IDC_EMAIL_PAGE_LOCATION: EmailPageLocation(); break; |
| + case IDC_PRINT: Print(); break; |
| + case IDC_ADVANCED_PRINT: AdvancedPrint(); break; |
| + case IDC_CHROME_TO_MOBILE_PAGE: ShowChromeToMobileBubble(); break; |
| + case IDC_ENCODING_AUTO_DETECT: ToggleEncodingAutoDetect(); break; |
| case IDC_ENCODING_UTF8: |
| case IDC_ENCODING_UTF16LE: |
| case IDC_ENCODING_ISO88591: |
| @@ -2511,69 +2522,70 @@ void Browser::ExecuteCommandWithDisposition( |
| case IDC_ENCODING_ISO88598: |
| case IDC_ENCODING_ISO88598I: |
| case IDC_ENCODING_WINDOWS1255: |
| - case IDC_ENCODING_WINDOWS1258: OverrideEncoding(id); break; |
| + case IDC_ENCODING_WINDOWS1258: OverrideEncoding(id); break; |
| // Clipboard commands |
| - case IDC_CUT: Cut(); break; |
| - case IDC_COPY: Copy(); break; |
| - case IDC_PASTE: Paste(); break; |
| + case IDC_CUT: Cut(); break; |
| + case IDC_COPY: Copy(); break; |
| + case IDC_PASTE: Paste(); break; |
| // Find-in-page |
| - case IDC_FIND: Find(); break; |
| - case IDC_FIND_NEXT: FindNext(); break; |
| - case IDC_FIND_PREVIOUS: FindPrevious(); break; |
| + case IDC_FIND: Find(); break; |
| + case IDC_FIND_NEXT: FindNext(); break; |
| + case IDC_FIND_PREVIOUS: FindPrevious(); break; |
| // Zoom |
| - case IDC_ZOOM_PLUS: Zoom(content::PAGE_ZOOM_IN); break; |
| - case IDC_ZOOM_NORMAL: Zoom(content::PAGE_ZOOM_RESET); break; |
| - case IDC_ZOOM_MINUS: Zoom(content::PAGE_ZOOM_OUT); break; |
| + case IDC_ZOOM_PLUS: Zoom(content::PAGE_ZOOM_IN); break; |
| + case IDC_ZOOM_NORMAL: Zoom(content::PAGE_ZOOM_RESET); break; |
| + case IDC_ZOOM_MINUS: Zoom(content::PAGE_ZOOM_OUT); break; |
| // Focus various bits of UI |
| - case IDC_FOCUS_TOOLBAR: FocusToolbar(); break; |
| - case IDC_FOCUS_LOCATION: FocusLocationBar(); break; |
| - case IDC_FOCUS_SEARCH: FocusSearch(); break; |
| - case IDC_FOCUS_MENU_BAR: FocusAppMenu(); break; |
| - case IDC_FOCUS_BOOKMARKS: FocusBookmarksToolbar(); break; |
| - case IDC_FOCUS_NEXT_PANE: FocusNextPane(); break; |
| - case IDC_FOCUS_PREVIOUS_PANE: FocusPreviousPane(); break; |
| + case IDC_FOCUS_TOOLBAR: FocusToolbar(); break; |
| + case IDC_FOCUS_LOCATION: FocusLocationBar(); break; |
| + case IDC_FOCUS_SEARCH: FocusSearch(); break; |
| + case IDC_FOCUS_MENU_BAR: FocusAppMenu(); break; |
| + case IDC_FOCUS_BOOKMARKS: FocusBookmarksToolbar(); break; |
| + case IDC_FOCUS_NEXT_PANE: FocusNextPane(); break; |
| + case IDC_FOCUS_PREVIOUS_PANE: FocusPreviousPane(); break; |
| // Show various bits of UI |
| - case IDC_OPEN_FILE: OpenFile(); break; |
| - case IDC_CREATE_SHORTCUTS: OpenCreateShortcutsDialog(); break; |
| - case IDC_DEV_TOOLS: ToggleDevToolsWindow( |
| - DEVTOOLS_TOGGLE_ACTION_NONE); |
| - break; |
| - case IDC_DEV_TOOLS_CONSOLE: ToggleDevToolsWindow( |
| - DEVTOOLS_TOGGLE_ACTION_SHOW_CONSOLE); |
| - break; |
| - case IDC_DEV_TOOLS_INSPECT: ToggleDevToolsWindow( |
| - DEVTOOLS_TOGGLE_ACTION_INSPECT); |
| - break; |
| - case IDC_TASK_MANAGER: OpenTaskManager(false); break; |
| - case IDC_VIEW_BACKGROUND_PAGES: OpenTaskManager(true); break; |
| - case IDC_FEEDBACK: OpenFeedbackDialog(); break; |
| - |
| - case IDC_SHOW_BOOKMARK_BAR: ToggleBookmarkBar(); break; |
| - case IDC_PROFILING_ENABLED: Profiling::Toggle(); break; |
| - |
| - case IDC_SHOW_BOOKMARK_MANAGER: OpenBookmarkManager(); break; |
| - case IDC_SHOW_APP_MENU: ShowAppMenu(); break; |
| - case IDC_SHOW_AVATAR_MENU: ShowAvatarMenu(); break; |
| - case IDC_SHOW_HISTORY: ShowHistoryTab(); break; |
| - case IDC_SHOW_DOWNLOADS: ShowDownloadsTab(); break; |
| - case IDC_MANAGE_EXTENSIONS: ShowExtensionsTab(); break; |
| - case IDC_OPTIONS: OpenOptionsDialog(); break; |
| - case IDC_EDIT_SEARCH_ENGINES: OpenSearchEngineOptionsDialog(); break; |
| - case IDC_VIEW_PASSWORDS: OpenPasswordManager(); break; |
| - case IDC_CLEAR_BROWSING_DATA: OpenClearBrowsingDataDialog(); break; |
| - case IDC_IMPORT_SETTINGS: OpenImportSettingsDialog(); break; |
| - case IDC_ABOUT: OpenAboutChromeDialog(); break; |
| - case IDC_UPGRADE_DIALOG: OpenUpdateChromeDialog(); break; |
| - case IDC_VIEW_INCOMPATIBILITIES: ShowAboutConflictsTab(); break; |
| - case IDC_HELP_PAGE: ShowHelpTab(); break; |
| - case IDC_SHOW_SYNC_SETUP: ShowSyncSetup(SyncPromoUI::SOURCE_MENU); |
| - break; |
| - case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(); break; |
| + case IDC_OPEN_FILE: OpenFile(); break; |
| + case IDC_CREATE_SHORTCUTS: OpenCreateShortcutsDialog(); break; |
| + case IDC_DEV_TOOLS: ToggleDevToolsWindow( |
| + DEVTOOLS_TOGGLE_ACTION_NONE); |
| + break; |
| + case IDC_DEV_TOOLS_CONSOLE: ToggleDevToolsWindow( |
| + DEVTOOLS_TOGGLE_ACTION_SHOW_CONSOLE); |
| + break; |
| + case IDC_DEV_TOOLS_INSPECT: ToggleDevToolsWindow( |
| + DEVTOOLS_TOGGLE_ACTION_INSPECT); |
| + break; |
| + case IDC_TASK_MANAGER: OpenTaskManager(false); break; |
| + case IDC_VIEW_BACKGROUND_PAGES: OpenTaskManager(true); break; |
| + case IDC_FEEDBACK: OpenFeedbackDialog(); break; |
| + |
| + case IDC_SHOW_BOOKMARK_BAR: ToggleBookmarkBar(); break; |
| + case IDC_PROFILING_ENABLED: Profiling::Toggle(); break; |
| + |
| + case IDC_SHOW_BOOKMARK_MANAGER: OpenBookmarkManager(); break; |
| + case IDC_SHOW_APP_MENU: ShowAppMenu(); break; |
| + case IDC_SHOW_AVATAR_MENU: ShowAvatarMenu(); break; |
| + case IDC_SHOW_HISTORY: ShowHistoryTab(); break; |
| + case IDC_SHOW_DOWNLOADS: ShowDownloadsTab(); break; |
| + case IDC_MANAGE_EXTENSIONS: ShowExtensionsTab(); break; |
| + case IDC_OPTIONS: OpenOptionsDialog(); break; |
| + case IDC_EDIT_SEARCH_ENGINES: OpenSearchEngineOptionsDialog(); break; |
| + case IDC_VIEW_PASSWORDS: OpenPasswordManager(); break; |
| + case IDC_CLEAR_BROWSING_DATA: OpenClearBrowsingDataDialog(); break; |
| + case IDC_IMPORT_SETTINGS: OpenImportSettingsDialog(); break; |
| + case IDC_ABOUT: OpenAboutChromeDialog(); break; |
| + case IDC_UPGRADE_DIALOG: OpenUpdateChromeDialog(); break; |
| + case IDC_VIEW_INCOMPATIBILITIES: ShowAboutConflictsTab(); break; |
| + case IDC_HELP_PAGE: ShowHelpTab(); break; |
| + case IDC_SHOW_SYNC_SETUP: ShowSyncSetup(SyncPromoUI::SOURCE_MENU); |
| + break; |
| + case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(); break; |
| + case IDC_SELECT_PREVIOUS_MRU_TAB: SelectPreviousMRUTab(); break; |
| default: |
| LOG(WARNING) << "Received Unimplemented Command: " << id; |
| @@ -4079,6 +4091,11 @@ void Browser::InitCommandState() { |
| command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_TAB, normal_window); |
| command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_TAB, |
| normal_window); |
| + if (CommandLine::ForCurrentProcess()->HasSwitch( |
|
sky
2012/06/15 19:47:39
This should be conditionally enabled.
NaveenBobbili (Motorola)
2012/06/25 09:44:23
Done.
|
| + switches::kEnableTabMRUSwitch)) { |
| + command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_MRU_TAB, |
| + 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); |