Index: chrome/browser/ui/browser_command_controller.cc |
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc |
index 354932e863d292377bc7dd8dc8e4ddc77e56175f..d6bccf483f4d35ce9b81a1c525e828bc91af4af1 100644 |
--- a/chrome/browser/ui/browser_command_controller.cc |
+++ b/chrome/browser/ui/browser_command_controller.cc |
@@ -13,9 +13,7 @@ |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/lifetime/application_lifetime.h" |
#include "chrome/browser/prefs/incognito_mode_prefs.h" |
-#include "chrome/browser/profiles/avatar_menu.h" |
#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/sessions/tab_restore_service.h" |
#include "chrome/browser/sessions/tab_restore_service_factory.h" |
#include "chrome/browser/shell_integration.h" |
@@ -183,17 +181,12 @@ namespace chrome { |
/////////////////////////////////////////////////////////////////////////////// |
// BrowserCommandController, public: |
-BrowserCommandController::BrowserCommandController( |
- Browser* browser, |
- ProfileManager* profile_manager) |
+BrowserCommandController::BrowserCommandController(Browser* browser) |
: browser_(browser), |
- profile_manager_(profile_manager), |
command_updater_(this), |
block_command_execution_(false), |
last_blocked_command_id_(-1), |
last_blocked_command_disposition_(CURRENT_TAB) { |
- if (profile_manager_) |
- profile_manager_->GetProfileInfoCache().AddObserver(this); |
browser_->tab_strip_model()->AddObserver(this); |
PrefService* local_state = g_browser_process->local_state(); |
if (local_state) { |
@@ -259,8 +252,6 @@ BrowserCommandController::~BrowserCommandController() { |
profile_pref_registrar_.RemoveAll(); |
local_pref_registrar_.RemoveAll(); |
browser_->tab_strip_model()->RemoveObserver(this); |
- if (profile_manager_) |
- profile_manager_->GetProfileInfoCache().RemoveObserver(this); |
} |
bool BrowserCommandController::IsReservedCommandOrKey( |
@@ -782,20 +773,6 @@ void BrowserCommandController::ExecuteCommandWithDisposition( |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// BrowserCommandController, ProfileInfoCacheObserver implementation: |
- |
-void BrowserCommandController::OnProfileAdded( |
- const base::FilePath& profile_path) { |
- UpdateCommandsForMultipleProfiles(); |
-} |
- |
-void BrowserCommandController::OnProfileWasRemoved( |
- const base::FilePath& profile_path, |
- const base::string16& profile_name) { |
- UpdateCommandsForMultipleProfiles(); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
// BrowserCommandController, SigninPrefObserver implementation: |
void BrowserCommandController::OnSigninAllowedPrefChange() { |
@@ -969,29 +946,31 @@ void BrowserCommandController::InitCommandState() { |
command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, true); |
// Show various bits of UI |
+ const bool guest_session = profile()->IsGuestSession(); |
+ const bool normal_window = browser_->is_type_tabbed(); |
UpdateOpenFileState(&command_updater_); |
command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false); |
UpdateCommandsForDevTools(); |
command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, CanOpenTaskManager()); |
- command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, |
- !profile()->IsGuestSession()); |
+ command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, !guest_session); |
command_updater_.UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); |
command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE_VIA_KEYBOARD, true); |
command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE_VIA_MENU, true); |
- command_updater_.UpdateCommandEnabled(IDC_BOOKMARKS_MENU, |
- !profile()->IsGuestSession()); |
+ command_updater_.UpdateCommandEnabled(IDC_BOOKMARKS_MENU, !guest_session); |
command_updater_.UpdateCommandEnabled(IDC_RECENT_TABS_MENU, |
- !profile()->IsGuestSession() && |
+ !guest_session && |
!profile()->IsOffTheRecord()); |
+ command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, normal_window); |
#if defined(OS_CHROMEOS) |
command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true); |
+#else |
+ // Chrome OS uses the system tray menu to handle multi-profiles. |
+ if (normal_window && (guest_session || !profile()->IsOffTheRecord())) |
+ command_updater_.UpdateCommandEnabled(IDC_SHOW_AVATAR_MENU, true); |
#endif |
UpdateShowSyncState(true); |
- // Initialize other commands based on the window type. |
- bool normal_window = browser_->is_type_tabbed(); |
- |
// Navigation commands |
command_updater_.UpdateCommandEnabled( |
IDC_HOME, |
@@ -1015,39 +994,24 @@ void BrowserCommandController::InitCommandState() { |
command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window); |
command_updater_.UpdateCommandEnabled(IDC_SELECT_LAST_TAB, normal_window); |
#if defined(OS_WIN) |
-#if !defined(USE_AURA) |
- const bool metro_mode = base::win::IsMetroProcess(); |
-#else |
- const bool metro_mode = |
- browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH ? |
- true : false; |
-#endif |
- command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_ENABLE, metro_mode); |
- command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_DISABLE, metro_mode); |
- int restart_mode = metro_mode ? |
- IDC_WIN8_DESKTOP_RESTART : IDC_WIN8_METRO_RESTART; |
+ bool metro = browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH; |
+ command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_ENABLE, metro); |
+ command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_DISABLE, metro); |
+ int restart_mode = metro ? IDC_WIN8_DESKTOP_RESTART : IDC_WIN8_METRO_RESTART; |
command_updater_.UpdateCommandEnabled(restart_mode, normal_window); |
#endif |
- // Show various bits of UI |
- command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, normal_window); |
- |
- // The upgrade entry and the view incompatibility entry should always be |
- // enabled. Whether they are visible is a separate matter determined on menu |
- // show. |
+ // These are always enabled; the menu determines their menu item visibility. |
command_updater_.UpdateCommandEnabled(IDC_UPGRADE_DIALOG, true); |
command_updater_.UpdateCommandEnabled(IDC_VIEW_INCOMPATIBILITIES, true); |
// Toggle speech input |
command_updater_.UpdateCommandEnabled(IDC_TOGGLE_SPEECH_INPUT, true); |
- // Initialize other commands whose state changes based on fullscreen mode. |
+ // Initialize other commands whose state changes based on various conditions. |
UpdateCommandsForFullscreenMode(); |
- |
UpdateCommandsForContentRestrictionState(); |
- |
UpdateCommandsForBookmarkEditing(); |
- |
UpdateCommandsForIncognitoAvailability(); |
} |
@@ -1279,18 +1243,6 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() { |
fullscreen_enabled); |
UpdateCommandsForBookmarkBar(); |
- UpdateCommandsForMultipleProfiles(); |
-} |
- |
-void BrowserCommandController::UpdateCommandsForMultipleProfiles() { |
- bool is_regular_or_guest_session = |
- profile()->IsGuestSession() || !profile()->IsOffTheRecord(); |
- bool enable = IsShowingMainUI() && |
- is_regular_or_guest_session && |
- profile_manager_ && |
- AvatarMenu::ShouldShowAvatarMenu(); |
- command_updater_.UpdateCommandEnabled(IDC_SHOW_AVATAR_MENU, |
- enable); |
} |
void BrowserCommandController::UpdatePrintingState() { |