Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/signin/signin_manager.h" | 5 #include "chrome/browser/signin/signin_manager.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 321 HandleAuthError(GoogleServiceAuthError( | 321 HandleAuthError(GoogleServiceAuthError( |
| 322 GoogleServiceAuthError::ACCOUNT_DISABLED), true); | 322 GoogleServiceAuthError::ACCOUNT_DISABLED), true); |
| 323 return false; | 323 return false; |
| 324 } | 324 } |
| 325 | 325 |
| 326 // This attempt is either 1) the user trying to establish initial sync, or | 326 // This attempt is either 1) the user trying to establish initial sync, or |
| 327 // 2) trying to refresh credentials for an existing username. If it is 2, we | 327 // 2) trying to refresh credentials for an existing username. If it is 2, we |
| 328 // need to try again, but take care to leave state around tracking that the | 328 // need to try again, but take care to leave state around tracking that the |
| 329 // user has successfully signed in once before with this username, so that on | 329 // user has successfully signed in once before with this username, so that on |
| 330 // restart we don't think sync setup has never completed. | 330 // restart we don't think sync setup has never completed. |
| 331 RevokeOAuthLoginToken(); | |
|
tim (not reviewing)
2013/03/29 22:41:25
Note that as of M26+ we won't actually go through
Roger Tawa OOO till Jul 10th
2013/03/31 18:16:30
All sign in flows go through PrepareForSignin(), s
| |
| 331 ClearTransientSigninData(); | 332 ClearTransientSigninData(); |
| 332 type_ = type; | 333 type_ = type; |
| 333 possibly_invalid_username_.assign(username); | 334 possibly_invalid_username_.assign(username); |
| 334 password_.assign(password); | 335 password_.assign(password); |
| 335 | 336 |
| 336 client_login_.reset(new GaiaAuthFetcher(this, | 337 client_login_.reset(new GaiaAuthFetcher(this, |
| 337 GaiaConstants::kChromeSource, | 338 GaiaConstants::kChromeSource, |
| 338 profile_->GetRequestContext())); | 339 profile_->GetRequestContext())); |
| 339 | 340 |
| 340 NotifyDiagnosticsObservers(SIGNIN_TYPE, SigninTypeToString(type)); | 341 NotifyDiagnosticsObservers(SIGNIN_TYPE, SigninTypeToString(type)); |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 551 NotifyDiagnosticsObservers(USERNAME, ""); | 552 NotifyDiagnosticsObservers(USERNAME, ""); |
| 552 NotifyDiagnosticsObservers(LSID, ""); | 553 NotifyDiagnosticsObservers(LSID, ""); |
| 553 NotifyDiagnosticsObservers( | 554 NotifyDiagnosticsObservers( |
| 554 signin_internals_util::SID, ""); | 555 signin_internals_util::SID, ""); |
| 555 | 556 |
| 556 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); | 557 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); |
| 557 content::NotificationService::current()->Notify( | 558 content::NotificationService::current()->Notify( |
| 558 chrome::NOTIFICATION_GOOGLE_SIGNED_OUT, | 559 chrome::NOTIFICATION_GOOGLE_SIGNED_OUT, |
| 559 content::Source<Profile>(profile_), | 560 content::Source<Profile>(profile_), |
| 560 content::Details<const GoogleServiceSignoutDetails>(&details)); | 561 content::Details<const GoogleServiceSignoutDetails>(&details)); |
| 562 RevokeOAuthLoginToken(); | |
| 561 token_service->ResetCredentialsInMemory(); | 563 token_service->ResetCredentialsInMemory(); |
| 562 token_service->EraseTokensFromDB(); | 564 token_service->EraseTokensFromDB(); |
| 563 } | 565 } |
| 564 | 566 |
| 567 void SigninManager::RevokeOAuthLoginToken() { | |
| 568 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); | |
| 569 if (token_service->HasOAuthLoginToken()) { | |
| 570 revoke_token_fetcher_.reset( | |
| 571 new GaiaAuthFetcher(this, | |
| 572 GaiaConstants::kChromeSource, | |
| 573 profile_->GetRequestContext())); | |
| 574 revoke_token_fetcher_->StartRevokeOAuth2Token( | |
| 575 token_service->GetOAuth2LoginRefreshToken()); | |
| 576 } | |
| 577 } | |
| 578 | |
| 579 void SigninManager::OnOAuth2RevokeTokenCompleted() { | |
| 580 revoke_token_fetcher_.reset(NULL); | |
| 581 } | |
| 582 | |
| 565 bool SigninManager::AuthInProgress() const { | 583 bool SigninManager::AuthInProgress() const { |
| 566 return !possibly_invalid_username_.empty(); | 584 return !possibly_invalid_username_.empty(); |
| 567 } | 585 } |
| 568 | 586 |
| 569 void SigninManager::OnGetUserInfoKeyNotFound(const std::string& key) { | 587 void SigninManager::OnGetUserInfoKeyNotFound(const std::string& key) { |
| 570 DCHECK(key == kGetInfoDisplayEmailKey || key == kGetInfoEmailKey); | 588 DCHECK(key == kGetInfoDisplayEmailKey || key == kGetInfoEmailKey); |
| 571 LOG(ERROR) << "Account is not associated with a valid email address. " | 589 LOG(ERROR) << "Account is not associated with a valid email address. " |
| 572 << "Login failed."; | 590 << "Login failed."; |
| 573 OnClientLoginFailure(GoogleServiceAuthError( | 591 OnClientLoginFailure(GoogleServiceAuthError( |
| 574 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); | 592 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 936 NotifySigninValueChanged(field, value)); | 954 NotifySigninValueChanged(field, value)); |
| 937 } | 955 } |
| 938 | 956 |
| 939 void SigninManager::NotifyDiagnosticsObservers( | 957 void SigninManager::NotifyDiagnosticsObservers( |
| 940 const TimedSigninStatusField& field, | 958 const TimedSigninStatusField& field, |
| 941 const std::string& value) { | 959 const std::string& value) { |
| 942 FOR_EACH_OBSERVER(SigninDiagnosticsObserver, | 960 FOR_EACH_OBSERVER(SigninDiagnosticsObserver, |
| 943 signin_diagnostics_observers_, | 961 signin_diagnostics_observers_, |
| 944 NotifySigninValueChanged(field, value)); | 962 NotifySigninValueChanged(field, value)); |
| 945 } | 963 } |
| OLD | NEW |