Index: chrome/browser/ui/webui/sync_setup_handler.cc |
diff --git a/chrome/browser/ui/webui/sync_setup_handler.cc b/chrome/browser/ui/webui/sync_setup_handler.cc |
index 8e2bf6d3a0b88530638569450cc221234124127b..f4b7849bee1080a769c7d3f330bf76ba9f7cdc19 100644 |
--- a/chrome/browser/ui/webui/sync_setup_handler.cc |
+++ b/chrome/browser/ui/webui/sync_setup_handler.cc |
@@ -1137,14 +1137,19 @@ void SyncSetupHandler::OpenSyncSetup(bool force_login) { |
// 3) Previously working credentials have expired. |
// 4) User is already signed in, but App Notifications needs to force another |
// login so it can fetch an oauth token (passes force_login=true) |
- // 5) User clicks [Advanced Settings] button on options page while already |
+ // 5) User is signed in, but has stopped sync via the google dashboard, and |
+ // signout is prohibited by policy so we need to force a re-auth. |
+ // 6) User clicks [Advanced Settings] button on options page while already |
// logged in. |
- // 6) One-click signin (credentials are already available, so should display |
+ // 7) One-click signin (credentials are already available, so should display |
// sync configure UI, not login UI). |
- // 7) ChromeOS re-enable after disabling sync. |
+ // 8) ChromeOS re-enable after disabling sync. |
SigninManager* signin = GetSignin(); |
if (force_login || |
signin->GetAuthenticatedUsername().empty() || |
+#if !defined(OS_CHROMEOS) |
+ (GetSyncService() && GetSyncService()->IsStartSuppressed()) || |
+#endif |
signin->signin_global_error()->HasBadge()) { |
// User is not logged in, or login has been specially requested - need to |
// display login UI (cases 1-4). |