diff options
Diffstat (limited to 'chrome/browser/ui/browser_command_controller.cc')
-rw-r--r-- | chrome/browser/ui/browser_command_controller.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index c007a8e..abb1233 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc @@ -229,6 +229,11 @@ BrowserCommandController::BrowserCommandController(Browser* browser) base::Bind(&BrowserCommandController::UpdateCommandsForFullscreenMode, base::Unretained(this))); #endif + pref_signin_allowed_.Init( + prefs::kSigninAllowed, + profile()->GetOriginalProfile()->GetPrefs(), + base::Bind(&BrowserCommandController::OnSigninAllowedPrefChange, + base::Unretained(this))); InitCommandState(); @@ -759,6 +764,9 @@ void BrowserCommandController::ExecuteCommandWithDisposition( case IDC_HELP_PAGE_VIA_MENU: ShowHelp(browser_, HELP_SOURCE_MENU); break; + case IDC_SHOW_SIGNIN: + ShowBrowserSigninOrSettings(browser_, signin_metrics::SOURCE_MENU); + break; case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(browser_); break; @@ -777,6 +785,16 @@ void BrowserCommandController::ExecuteCommandWithDisposition( } } +//////////////////////////////////////////////////////////////////////////////// +// BrowserCommandController, SigninPrefObserver implementation: + +void BrowserCommandController::OnSigninAllowedPrefChange() { + // For unit tests, we don't have a window. + if (!window()) + return; + UpdateShowSyncState(IsShowingMainUI()); +} + // BrowserCommandController, TabStripModelObserver implementation: void BrowserCommandController::TabInsertedAt(WebContents* contents, @@ -966,6 +984,8 @@ void BrowserCommandController::InitCommandState() { } #endif + UpdateShowSyncState(true); + // Navigation commands command_updater_.UpdateCommandEnabled( IDC_HOME, @@ -1050,6 +1070,7 @@ void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability( command_updater->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, !forced_incognito); command_updater->UpdateCommandEnabled(IDC_OPTIONS, !forced_incognito || guest_session); + command_updater->UpdateCommandEnabled(IDC_SHOW_SIGNIN, !forced_incognito); } void BrowserCommandController::UpdateCommandsForIncognitoAvailability() { @@ -1228,6 +1249,7 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() { #if defined(GOOGLE_CHROME_BUILD) command_updater_.UpdateCommandEnabled(IDC_FEEDBACK, show_main_ui); #endif + UpdateShowSyncState(show_main_ui); // Settings page/subpages are forced to open in normal mode. We disable these // commands for guest sessions and when incognito is forced. @@ -1277,6 +1299,11 @@ void BrowserCommandController::UpdateSaveAsState() { command_updater_.UpdateCommandEnabled(IDC_SAVE_PAGE, CanSavePage(browser_)); } +void BrowserCommandController::UpdateShowSyncState(bool show_main_ui) { + command_updater_.UpdateCommandEnabled( + IDC_SHOW_SYNC_SETUP, show_main_ui && pref_signin_allowed_.GetValue()); +} + // static void BrowserCommandController::UpdateOpenFileState( CommandUpdater* command_updater) { |