Index: chrome/browser/signin/profile_oauth2_token_service.cc |
diff --git a/chrome/browser/signin/profile_oauth2_token_service.cc b/chrome/browser/signin/profile_oauth2_token_service.cc |
index 6c00938c6acde13cdb628931cba2d4e0ba0954c3..718f41e08d255fa36812c2536795eff59d7ea78d 100644 |
--- a/chrome/browser/signin/profile_oauth2_token_service.cc |
+++ b/chrome/browser/signin/profile_oauth2_token_service.cc |
@@ -152,6 +152,15 @@ void ProfileOAuth2TokenService::Observe( |
break; |
} |
case chrome::NOTIFICATION_TOKEN_LOADING_FINISHED: |
+ // During startup, if the user is signed in and the OAuth2 refresh token |
+ // is empty, flag it as an error by badging the menu. Otherwise, if the |
+ // user goes on to set up sync, they will have to make two attempts: |
+ // One to surface the OAuth2 error, and a second one after signing in. |
+ // See crbug.com/276650. |
+ if (!GetAccountId(profile_).empty() && GetRefreshToken().empty()) { |
+ UpdateAuthError(GoogleServiceAuthError( |
+ GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); |
+ } |
FireRefreshTokensLoaded(); |
break; |
default: |