| Index: chrome/browser/sync/signin_manager.h
|
| diff --git a/chrome/browser/sync/signin_manager.h b/chrome/browser/sync/signin_manager.h
|
| index 240036928856c8de4bee646978ec5bf1cc658132..ff05bdcdf7fb171ced8a2ba856b4217cf2a548cf 100644
|
| --- a/chrome/browser/sync/signin_manager.h
|
| +++ b/chrome/browser/sync/signin_manager.h
|
| @@ -6,6 +6,13 @@
|
| // which user is signed in. When a user is signed in, a ClientLogin
|
| // request is run on their behalf. Auth tokens are fetched from Google
|
| // and the results are stored in the TokenService.
|
| +//
|
| +// **NOTE** on semantics of SigninManager:
|
| +//
|
| +// Once a signin is successful, the username becomes "established" and will not
|
| +// be cleared until a SignOut operation is performed (persists across
|
| +// restarts). Until that happens, the signin manager can still be used to
|
| +// refresh credentials, but changing the username is not permitted.
|
|
|
| #ifndef CHROME_BROWSER_SYNC_SIGNIN_MANAGER_H_
|
| #define CHROME_BROWSER_SYNC_SIGNIN_MANAGER_H_
|
| @@ -52,12 +59,16 @@ class SigninManager : public GaiaAuthConsumer,
|
| void Initialize(Profile* profile);
|
| bool IsInitialized() const;
|
|
|
| - // If a user is signed in, this will return their name.
|
| + // If a user has previously established a username and SignOut has not been
|
| + // called, this will return the username.
|
| // Otherwise, it will return an empty string.
|
| - const std::string& GetUsername();
|
| + const std::string& GetAuthenticatedUsername();
|
|
|
| - // Sets the user name. Used for migrating credentials from previous system.
|
| - void SetUsername(const std::string& username);
|
| + // Sets the user name. Note: |username| should be already authenticated as
|
| + // this is a sticky operation (in contrast to StartSignIn).
|
| + // TODO(tim): Remove this in favor of passing username on construction by
|
| + // (by platform / depending on StartBehavior). Bug 88109.
|
| + void SetAuthenticatedUsername(const std::string& username);
|
|
|
| // Attempt to sign in this user with OAuth. If successful, set a preference
|
| // indicating the signed in user and send out a notification, then start
|
| @@ -82,11 +93,6 @@ class SigninManager : public GaiaAuthConsumer,
|
| // associated with the user, and canceling all auth in progress.
|
| void SignOut();
|
|
|
| - // Called when a new request to re-authenticate a user is in progress.
|
| - // Will clear in memory data but leaves the db as such so when the browser
|
| - // restarts we can use the old token(which might throw a password error).
|
| - void ClearInMemoryData();
|
| -
|
| // GaiaAuthConsumer
|
| virtual void OnClientLoginSuccess(const ClientLoginResult& result) OVERRIDE;
|
| virtual void OnClientLoginFailure(
|
| @@ -118,18 +124,25 @@ class SigninManager : public GaiaAuthConsumer,
|
| const content::NotificationDetails& details) OVERRIDE;
|
|
|
| private:
|
| + FRIEND_TEST_ALL_PREFIXES(SigninManagerTest, ClearTransientSigninData);
|
| + FRIEND_TEST_ALL_PREFIXES(SigninManagerTest, ProvideSecondFactorSuccess);
|
| + FRIEND_TEST_ALL_PREFIXES(SigninManagerTest, ProvideSecondFactorFailure);
|
| void PrepareForSignin();
|
| void PrepareForOAuthSignin();
|
|
|
| + // Called when a new request to re-authenticate a user is in progress.
|
| + // Will clear in memory data but leaves the db as such so when the browser
|
| + // restarts we can use the old token(which might throw a password error).
|
| + void ClearTransientSigninData();
|
| +
|
| Profile* profile_;
|
|
|
| // ClientLogin identity.
|
| - std::string username_;
|
| + std::string possibly_invalid_username_;
|
| std::string password_; // This is kept empty whenever possible.
|
| bool had_two_factor_error_;
|
|
|
| // OAuth identity.
|
| - std::string oauth_username_;
|
| std::string oauth1_request_token_;
|
|
|
| void CleanupNotificationRegistration();
|
| @@ -147,6 +160,8 @@ class SigninManager : public GaiaAuthConsumer,
|
| // Register for notifications from the TokenService.
|
| content::NotificationRegistrar registrar_;
|
|
|
| + std::string authenticated_username_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SigninManager);
|
| };
|
|
|
|
|