Index: chrome/browser/chromeos/login/oauth2_login_manager.h |
diff --git a/chrome/browser/chromeos/login/oauth2_login_manager.h b/chrome/browser/chromeos/login/oauth2_login_manager.h |
deleted file mode 100644 |
index 12b17738d833ea9228ec38e4784b1500e9aef811..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/login/oauth2_login_manager.h |
+++ /dev/null |
@@ -1,258 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_ |
-#define CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_ |
- |
-#include <string> |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/observer_list.h" |
-#include "base/time/time.h" |
-#include "chrome/browser/chromeos/login/oauth2_login_verifier.h" |
-#include "chrome/browser/chromeos/login/oauth2_token_fetcher.h" |
-#include "components/keyed_service/core/keyed_service.h" |
-#include "google_apis/gaia/gaia_oauth_client.h" |
-#include "google_apis/gaia/oauth2_token_service.h" |
-#include "net/url_request/url_request_context_getter.h" |
- |
-class GoogleServiceAuthError; |
-class Profile; |
-class ProfileOAuth2TokenService; |
- |
-namespace chromeos { |
- |
-// This class is responsible for restoring authenticated web sessions out of |
-// OAuth2 refresh tokens or pre-authenticated cookie jar. |
-class OAuth2LoginManager : public KeyedService, |
- public gaia::GaiaOAuthClient::Delegate, |
- public OAuth2LoginVerifier::Delegate, |
- public OAuth2TokenFetcher::Delegate, |
- public OAuth2TokenService::Observer { |
- public: |
- // Session restore states. |
- enum SessionRestoreState { |
- // Session restore is not started. |
- SESSION_RESTORE_NOT_STARTED, |
- // Session restore is being prepared. |
- SESSION_RESTORE_PREPARING, |
- // Session restore is in progress. We are currently issuing calls to verify |
- // stored OAuth tokens and populate cookie jar with GAIA credentials. |
- SESSION_RESTORE_IN_PROGRESS, |
- // Session restore is completed. |
- SESSION_RESTORE_DONE, |
- // Session restore failed. |
- SESSION_RESTORE_FAILED, |
- // Session restore failed due to connection or service errors. |
- SESSION_RESTORE_CONNECTION_FAILED, |
- }; |
- |
- // Session restore strategy. |
- enum SessionRestoreStrategy { |
- // Generate OAuth2 refresh token from authentication profile's cookie jar. |
- // Restore session from generated OAuth2 refresh token. |
- RESTORE_FROM_COOKIE_JAR, |
- // Restore session from saved OAuth2 refresh token from TokenServices. |
- RESTORE_FROM_SAVED_OAUTH2_REFRESH_TOKEN, |
- // Restore session from OAuth2 refresh token passed via command line. |
- RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN, |
- // Restore session from authentication code passed via command line. |
- RESTORE_FROM_AUTH_CODE, |
- }; |
- |
- class Observer { |
- public: |
- virtual ~Observer() {} |
- |
- // Raised when merge session state changes. |
- virtual void OnSessionRestoreStateChanged(Profile* user_profile, |
- SessionRestoreState state) {} |
- |
- // Raised when a new OAuth2 refresh token is avaialble. |
- virtual void OnNewRefreshTokenAvaiable(Profile* user_profile) {} |
- |
- // Raised when session's GAIA credentials (SID+LSID) are available to |
- // other signed in services. |
- virtual void OnSessionAuthenticated(Profile* user_profile) {} |
- }; |
- |
- explicit OAuth2LoginManager(Profile* user_profile); |
- virtual ~OAuth2LoginManager(); |
- |
- void AddObserver(OAuth2LoginManager::Observer* observer); |
- void RemoveObserver(OAuth2LoginManager::Observer* observer); |
- |
- // Restores and verifies OAuth tokens either following specified |
- // |restore_strategy|. For |restore_strategy| with values |
- // RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN or |
- // RESTORE_FROM_AUTH_CODE, respectively |
- // parameters |oauth2_refresh_token| or |auth_code| need to have non-empty |
- // value. |
- void RestoreSession( |
- net::URLRequestContextGetter* auth_request_context, |
- SessionRestoreStrategy restore_strategy, |
- const std::string& oauth2_refresh_token, |
- const std::string& auth_code); |
- |
- // Continues session restore after transient network errors. |
- void ContinueSessionRestore(); |
- |
- // Start resporting session from saved OAuth2 refresh token. |
- void RestoreSessionFromSavedTokens(); |
- |
- // Stops all background authentication requests. |
- void Stop(); |
- |
- // Returns session restore state. |
- SessionRestoreState state() { return state_; } |
- |
- const base::Time& session_restore_start() { return session_restore_start_; } |
- |
- // Returns true if the tab loading should block until session restore |
- // finishes. |
- bool ShouldBlockTabLoading(); |
- |
- private: |
- friend class MergeSessionLoadPageTest; |
- friend class OAuth2Test; |
- |
- // Session restore outcomes (for UMA). |
- enum SessionRestoreOutcome { |
- SESSION_RESTORE_UNDEFINED = 0, |
- SESSION_RESTORE_SUCCESS = 1, |
- SESSION_RESTORE_TOKEN_FETCH_FAILED = 2, |
- SESSION_RESTORE_NO_REFRESH_TOKEN_FAILED = 3, |
- SESSION_RESTORE_OAUTHLOGIN_FAILED = 4, |
- SESSION_RESTORE_MERGE_SESSION_FAILED = 5, |
- SESSION_RESTORE_LISTACCOUNTS_FAILED = 6, |
- SESSION_RESTORE_NOT_NEEDED = 7, |
- SESSION_RESTORE_COUNT = 8, |
- }; |
- |
- // Outcomes of post-merge session verification. |
- // This enum is used for an UMA histogram, and hence new items should only be |
- // appended at the end. |
- enum MergeVerificationOutcome { |
- POST_MERGE_UNDEFINED = 0, |
- POST_MERGE_SUCCESS = 1, |
- POST_MERGE_NO_ACCOUNTS = 2, |
- POST_MERGE_MISSING_PRIMARY_ACCOUNT = 3, |
- POST_MERGE_PRIMARY_NOT_FIRST_ACCOUNT = 4, |
- POST_MERGE_VERIFICATION_FAILED = 5, |
- POST_MERGE_CONNECTION_FAILED = 6, |
- POST_MERGE_COUNT = 7, |
- }; |
- |
- // KeyedService implementation. |
- virtual void Shutdown() OVERRIDE; |
- |
- // gaia::GaiaOAuthClient::Delegate overrides. |
- virtual void OnRefreshTokenResponse(const std::string& access_token, |
- int expires_in_seconds) OVERRIDE; |
- virtual void OnGetUserEmailResponse(const std::string& user_email) OVERRIDE; |
- virtual void OnOAuthError() OVERRIDE; |
- virtual void OnNetworkError(int response_code) OVERRIDE; |
- |
- // OAuth2LoginVerifier::Delegate overrides. |
- virtual void OnSessionMergeSuccess() OVERRIDE; |
- virtual void OnSessionMergeFailure(bool connection_error) OVERRIDE; |
- virtual void OnListAccountsSuccess(const std::string& data) OVERRIDE; |
- virtual void OnListAccountsFailure(bool connection_error) OVERRIDE; |
- |
- // OAuth2TokenFetcher::Delegate overrides. |
- virtual void OnOAuth2TokensAvailable( |
- const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) OVERRIDE; |
- virtual void OnOAuth2TokensFetchFailed() OVERRIDE; |
- |
- // OAuth2TokenService::Observer implementation: |
- virtual void OnRefreshTokenAvailable(const std::string& account_id) OVERRIDE; |
- |
- // Signals delegate that authentication is completed, kicks off token fetching |
- // process. |
- void CompleteAuthentication(); |
- |
- // Retrieves ProfileOAuth2TokenService for |user_profile_|. |
- ProfileOAuth2TokenService* GetTokenService(); |
- |
- // Retrieves the primary account for |user_profile_|. |
- const std::string& GetPrimaryAccountId(); |
- |
- // Records |refresh_token_| to token service. The associated account id is |
- // assumed to be the primary account id of the user profile. If the primary |
- // account id is not present, GetAccountIdOfRefreshToken will be called to |
- // retrieve the associated account id. |
- void StoreOAuth2Token(); |
- |
- // Get the account id corresponding to the specified refresh token. |
- void GetAccountIdOfRefreshToken(const std::string& refresh_token); |
- |
- // Attempts to fetch OAuth2 tokens by using pre-authenticated cookie jar from |
- // provided |auth_profile|. |
- void FetchOAuth2Tokens(); |
- |
- // Reports when all tokens are loaded. |
- void ReportOAuth2TokensLoaded(); |
- |
- // Checks if primary account sessions cookies are stale and restores them |
- // if needed. |
- void VerifySessionCookies(); |
- |
- // Issue GAIA cookie recovery (MergeSession) from |refresh_token_|. |
- void RestoreSessionCookies(); |
- |
- // Checks GAIA error and figures out whether the request should be |
- // re-attempted. |
- bool RetryOnError(const GoogleServiceAuthError& error); |
- |
- // Changes |state_|, if needed fires observers (OnSessionRestoreStateChanged). |
- void SetSessionRestoreState(SessionRestoreState state); |
- |
- // Testing helper. |
- void SetSessionRestoreStartForTesting(const base::Time& time); |
- |
- // Records |outcome| of session restore process and sets new |state|. |
- void RecordSessionRestoreOutcome(SessionRestoreOutcome outcome, |
- SessionRestoreState state); |
- |
- // Records |outcome| of merge verification check. |is_pre_merge| specifies |
- // if this is pre or post merge session verification. |
- static void RecordCookiesCheckOutcome( |
- bool is_pre_merge, |
- MergeVerificationOutcome outcome); |
- |
- // Keeps the track if we have already reported OAuth2 token being loaded |
- // by OAuth2TokenService. |
- Profile* user_profile_; |
- scoped_refptr<net::URLRequestContextGetter> auth_request_context_; |
- SessionRestoreStrategy restore_strategy_; |
- SessionRestoreState state_; |
- |
- scoped_ptr<OAuth2TokenFetcher> oauth2_token_fetcher_; |
- scoped_ptr<OAuth2LoginVerifier> login_verifier_; |
- scoped_ptr<gaia::GaiaOAuthClient> account_id_fetcher_; |
- |
- // OAuth2 refresh token. |
- std::string refresh_token_; |
- |
- // OAuthLogin scoped access token. |
- std::string oauthlogin_access_token_; |
- |
- // Authorization code for fetching OAuth2 tokens. |
- std::string auth_code_; |
- |
- // Session restore start time. |
- base::Time session_restore_start_; |
- |
- // List of observers to notify when token availability changes. |
- // Makes sure list is empty on destruction. |
- // TODO(zelidrag|gspencer): Figure out how to get rid of ProfileHelper so we |
- // can change the line below to ObserverList<Observer, true>. |
- ObserverList<Observer, false> observer_list_; |
- |
- DISALLOW_COPY_AND_ASSIGN(OAuth2LoginManager); |
-}; |
- |
-} // namespace chromeos |
- |
-#endif // CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_ |