Index: chrome/browser/signin/signin_tracker.cc |
diff --git a/chrome/browser/signin/signin_tracker.cc b/chrome/browser/signin/signin_tracker.cc |
index cdddc4966590e381a1aeffda7c2072334b4b6b94..cb3312057e4d61f09b545dde33e94bde039b8ca5 100644 |
--- a/chrome/browser/signin/signin_tracker.cc |
+++ b/chrome/browser/signin/signin_tracker.cc |
@@ -171,9 +171,14 @@ bool SigninTracker::AreServicesSignedIn(Profile* profile) { |
return true; |
ProfileSyncService* service = |
ProfileSyncServiceFactory::GetForProfile(profile); |
+ // Check the sync service state - we ignore CONNECTION_FAILED errors here |
+ // because they are transient and do not signify a failure of the signin |
+ // process. |
return (service->IsSyncEnabledAndLoggedIn() && |
service->IsSyncTokenAvailable() && |
- service->GetAuthError().state() == GoogleServiceAuthError::NONE && |
+ (service->GetAuthError().state() == GoogleServiceAuthError::NONE || |
+ service->GetAuthError().state() == |
+ GoogleServiceAuthError::CONNECTION_FAILED) && |
!service->HasUnrecoverableError()); |
} |