Chromium Code Reviews| Index: chrome/browser/chromeos/login/oauth2_login_verifier.h |
| diff --git a/chrome/browser/chromeos/login/oauth2_login_verifier.h b/chrome/browser/chromeos/login/oauth2_login_verifier.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f96d9013abd4225c099c35af3eb01b1e1e5c3e11 |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/login/oauth2_login_verifier.h |
| @@ -0,0 +1,91 @@ |
| +// 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_VERIFIER_H_ |
| +#define CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_VERIFIER_H_ |
| + |
| +#include <string> |
| + |
| +#include "base/basictypes.h" |
| +#include "base/callback_forward.h" |
| +#include "base/compiler_specific.h" |
| +#include "base/memory/weak_ptr.h" |
| +#include "google_apis/gaia/gaia_auth_consumer.h" |
| +#include "google_apis/gaia/gaia_auth_fetcher.h" |
| +#include "google_apis/gaia/oauth2_access_token_consumer.h" |
| +#include "google_apis/gaia/oauth2_access_token_fetcher.h" |
| + |
| +namespace chromeos { |
| + |
| +// Given the OAuth2 refresh token, this class will try to exchange it for GAIA |
| +// credentials (SID+LSID) and populate current session's cookie jar. |
| +class OAuth2LoginVerifier : public base::SupportsWeakPtr<OAuth2LoginVerifier>, |
| + public GaiaAuthConsumer, |
| + public OAuth2AccessTokenConsumer { |
| + public: |
| + class Delegate { |
| + public: |
| + virtual ~Delegate() {} |
| + virtual void OnOAuth2LoginVerifierSuccess(const std::string& sid, |
| + const std::string& lsid, |
| + const std::string& auth) = 0; |
| + virtual void OnOAuth2LoginVerifierFaulure() = 0; |
|
Joao da Silva
2013/01/11 16:45:07
*Failure
zel
2013/01/11 19:51:16
Done.
|
| + }; |
| + |
| + OAuth2LoginVerifier(OAuth2LoginVerifier::Delegate* delegate, |
| + net::URLRequestContextGetter* system_request_context, |
|
Joao da Silva
2013/01/11 16:45:07
Needs forward decl
zel
2013/01/11 19:51:16
Done.
|
| + net::URLRequestContextGetter* user_request_context); |
| + virtual ~OAuth2LoginVerifier(); |
| + |
| + // Starts OAuth2 token for GAIA credentials exchange. |
| + void VerifyRefreshToken(const std::string& refresh_token); |
| + |
| + private: |
| + // GaiaAuthConsumer overrides. |
| + virtual void OnClientLoginSuccess(const ClientLoginResult& result) OVERRIDE; |
| + virtual void OnClientLoginFailure( |
| + const GoogleServiceAuthError& error) OVERRIDE; |
| + virtual void OnIssueAuthTokenSuccess(const std::string& service, |
| + const std::string& auth_token) OVERRIDE; |
| + virtual void OnIssueAuthTokenFailure( |
| + const std::string& service, const GoogleServiceAuthError& error) OVERRIDE; |
| + virtual void OnMergeSessionSuccess(const std::string& data) OVERRIDE; |
| + virtual void OnMergeSessionFailure( |
| + const GoogleServiceAuthError& error) OVERRIDE; |
| + |
| + // OAuth2AccessTokenConsumer overrides. |
| + virtual void OnGetTokenSuccess(const std::string& access_token, |
| + const base::Time& expiration_time) OVERRIDE; |
| + virtual void OnGetTokenFailure(const GoogleServiceAuthError& error) OVERRIDE; |
| + |
| + // Starts OAuthLogin request. |
| + void StartOAuthLogin(); |
| + |
| + // Starts sequence of calls (IssueAuthToken, MergeSession) for exchanging |
| + // OAuth2 access token for GAIA cookies. |
| + void StartCookiesRetrieval(); |
| + |
| + // Decides how to proceed on GAIA |error|. If the error looks temporary, |
| + // retries |task| after certain delay until max retry count is reached. |
| + void RetryOnError(const char* operation_id, |
| + const GoogleServiceAuthError& error, |
| + const base::Closure& task); |
| + |
| + OAuth2LoginVerifier::Delegate* delegate_; |
| + OAuth2AccessTokenFetcher token_fetcher_; |
| + GaiaAuthFetcher gaia_fetcher_; |
| + std::string access_token_; |
| + std::string refresh_token_; |
| + std::string sid_; |
| + std::string lsid_; |
| + std::string token_; |
| + // The retry counter. Increment this only when failure happened. |
| + int retry_count_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(OAuth2LoginVerifier); |
| +}; |
| + |
| +} // namespace chromeos |
| + |
| +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_VERIFIER_H_ |