Index: chrome/browser/chromeos/login/session/user_session_manager.h |
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.h b/chrome/browser/chromeos/login/session/user_session_manager.h |
index 3d47ce5374de6025137d9289efeb3b6d7509edf7..88f9118f19b0eeb301e584081ca1fbc75a2a8b77 100644 |
--- a/chrome/browser/chromeos/login/session/user_session_manager.h |
+++ b/chrome/browser/chromeos/login/session/user_session_manager.h |
@@ -29,13 +29,15 @@ class PrefService; |
class Profile; |
namespace user_manager { |
- |
class User; |
- |
} // namespace user_manager |
namespace chromeos { |
+namespace test { |
+class UserSessionManagerTestApi; |
+} // namespace test |
+ |
class EasyUnlockKeyManager; |
class InputEventsBlocker; |
class LoginDisplayHost; |
@@ -104,15 +106,24 @@ class UserSessionManager |
// |start_url| is an optional URL to be opened in Guest session browser. |
void CompleteGuestSessionLogin(const GURL& start_url); |
- // Start user session given |user_context| and |authenticator| which holds |
- // authentication context (profile). |
+ // Creates and returns the authenticator to use. |
+ // Single Authenticator instance is used for entire login process, |
+ // even for multiple retries. Authenticator instance holds reference to |
+ // login profile and is later used during fetching of OAuth tokens. |
+ scoped_refptr<Authenticator> CreateAuthenticator( |
+ AuthStatusConsumer* consumer); |
+ |
+ // Start user session given |user_context|. |
+ // OnProfilePrepared() will be called on |delegate| once Profile is ready. |
void StartSession(const UserContext& user_context, |
StartSessionType start_session_type, |
- scoped_refptr<Authenticator> authenticator, |
bool has_auth_cookies, |
bool has_active_session, |
UserSessionManagerDelegate* delegate); |
+ // Invalidates |delegate|, which was passed to StartSession method call. |
+ void DelegateDeleted(UserSessionManagerDelegate* delegate); |
+ |
// Perform additional actions once system wide notification |
// "UserLoggedIn" has been sent. |
void PerformPostUserLoggedInActions(); |
@@ -213,6 +224,7 @@ class UserSessionManager |
void RemoveProfileForTesting(Profile* profile); |
private: |
+ friend class test::UserSessionManagerTestApi; |
friend struct DefaultSingletonTraits<UserSessionManager>; |
typedef std::set<std::string> SigninSessionRestoreStateSet; |
@@ -328,6 +340,18 @@ class UserSessionManager |
InputEventsBlocker* input_events_blocker, |
const locale_util::LanguageSwitchResult& result); |
+ // Test API methods. |
+ |
+ // Injects |user_context| that will be used to create StubAuthenticator |
+ // instance when CreateAuthenticator() is called. |
+ void InjectStubUserContext(const UserContext& user_context); |
+ |
+ // Controls whether browser instance should be launched after sign in |
+ // (used in tests). |
+ void set_should_launch_browser_in_tests(bool should_launch_browser) { |
+ should_launch_browser_ = should_launch_browser; |
+ } |
+ |
UserSessionManagerDelegate* delegate_; |
// Authentication/user context. |
@@ -335,6 +359,9 @@ class UserSessionManager |
scoped_refptr<Authenticator> authenticator_; |
StartSessionType start_session_type_; |
+ // Injected user context for stub authenticator. |
+ scoped_ptr<UserContext> injected_user_context_; |
+ |
// True if the authentication context's cookie jar contains authentication |
// cookies from the authentication extension login flow. |
bool has_auth_cookies_; |
@@ -383,6 +410,9 @@ class UserSessionManager |
bool running_easy_unlock_key_ops_; |
base::Closure easy_unlock_key_ops_finished_callback_; |
+ // Whether should launch browser, tests may override this value. |
+ bool should_launch_browser_; |
+ |
DISALLOW_COPY_AND_ASSIGN(UserSessionManager); |
}; |