From 7529916efbda5763f6b5ddd9256ea46e29065281 Mon Sep 17 00:00:00 2001
From: ricea <ricea@chromium.org>
Date: Wed, 19 Aug 2015 02:32:03 -0700
Subject: Revert of Delete dead signin code (SigninGlobalError) (patchset #8
 id:140001 of https://codereview.chromium.org/1299543002/ )

Reason for revert:
Broke the Mac10.9 Tests (dbg) bot:

http://build.chromium.org/p/chromium.mac/builders/Mac10.9%20Tests%20%28dbg%29/builds/10278

See the stack trace in the logs.

Original issue's description:
> Delete dead signin code (SigninGlobalError)
>
> BUG=none
>
> Committed: https://crrev.com/c91b178b07b0d9fb0c7a437df3a1da3db1887160
> Cr-Commit-Position: refs/heads/master@{#344176}

TBR=anthonyvd@chromium.org,sky@chromium.org,rogerta@chromium.org,estade@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=none

Review URL: https://codereview.chromium.org/1301583004

Cr-Commit-Position: refs/heads/master@{#344188}
---
 chrome/browser/ui/browser_command_controller.cc | 27 +++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

(limited to '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 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) {
-- 
cgit v1.1