diff options
author | msarda@chromium.org <msarda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-05 06:59:37 +0000 |
---|---|---|
committer | msarda@chromium.org <msarda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-05 06:59:37 +0000 |
commit | 596f0a9d480d4af122d761b01560484d9a796f13 (patch) | |
tree | 3110a66dfee88c9cc5cacfb4de3a19c0ffde93ba /google_apis/gaia/oauth2_access_token_fetcher.h | |
parent | 34ba1ffb32e6b517f3051ae0cc32cdf783aab47d (diff) | |
download | chromium_src-596f0a9d480d4af122d761b01560484d9a796f13.zip chromium_src-596f0a9d480d4af122d761b01560484d9a796f13.tar.gz chromium_src-596f0a9d480d4af122d761b01560484d9a796f13.tar.bz2 |
Extract OAuth2AccessTokenFetcher interface.
This CL extracts the interface of OAuth2AccessTokenFetcher as the
implementation for mobile is different .
It renames the existing OAuth2AccessTokenFetcher to
OAuth2AccessTokenFetcherImpl.
TBR=davemoore@chromium.org
BUG=NONE
Review URL: https://codereview.chromium.org/182573003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254966 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'google_apis/gaia/oauth2_access_token_fetcher.h')
-rw-r--r-- | google_apis/gaia/oauth2_access_token_fetcher.h | 93 |
1 files changed, 14 insertions, 79 deletions
diff --git a/google_apis/gaia/oauth2_access_token_fetcher.h b/google_apis/gaia/oauth2_access_token_fetcher.h index 90805c0..241fe99 100644 --- a/google_apis/gaia/oauth2_access_token_fetcher.h +++ b/google_apis/gaia/oauth2_access_token_fetcher.h @@ -8,33 +8,12 @@ #include <string> #include <vector> -#include "base/gtest_prod_util.h" -#include "base/memory/scoped_ptr.h" #include "google_apis/gaia/oauth2_access_token_consumer.h" #include "net/url_request/url_fetcher_delegate.h" -#include "url/gurl.h" -class OAuth2AccessTokenFetcherTest; +class OAuth2AccessTokenConsumer; -namespace base { -class Time; -} - -namespace net { -class URLFetcher; -class URLRequestContextGetter; -class URLRequestStatus; -} - -// Abstracts the details to get OAuth2 access token token from -// OAuth2 refresh token. -// See "Using the Refresh Token" section in: -// http://code.google.com/apis/accounts/docs/OAuth2WebServer.html -// -// This class should be used on a single thread, but it can be whichever thread -// that you like. -// Also, do not reuse the same instance. Once Start() is called, the instance -// should not be reused. +// Interface of a OAuth2 access token fetcher. // // Usage: // * Create an instance with a consumer. @@ -44,10 +23,9 @@ class URLRequestStatus; // // This class can handle one request at a time. To parallelize requests, // create multiple instances. -class OAuth2AccessTokenFetcher : public net::URLFetcherDelegate { +class OAuth2AccessTokenFetcher { public: - OAuth2AccessTokenFetcher(OAuth2AccessTokenConsumer* consumer, - net::URLRequestContextGetter* getter); + explicit OAuth2AccessTokenFetcher(OAuth2AccessTokenConsumer* consumer); virtual ~OAuth2AccessTokenFetcher(); // Starts the flow with the given parameters. @@ -59,64 +37,21 @@ class OAuth2AccessTokenFetcher : public net::URLFetcherDelegate { virtual void Start(const std::string& client_id, const std::string& client_secret, const std::string& refresh_token, - const std::vector<std::string>& scopes); - - void CancelRequest(); - - // Implementation of net::URLFetcherDelegate - virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; - - private: - enum State { - INITIAL, - GET_ACCESS_TOKEN_STARTED, - GET_ACCESS_TOKEN_DONE, - ERROR_STATE, - }; - - // Helper methods for the flow. - void StartGetAccessToken(); - void EndGetAccessToken(const net::URLFetcher* source); - - // Helper mehtods for reporting back results. - void OnGetTokenSuccess(const std::string& access_token, - const base::Time& expiration_time); - void OnGetTokenFailure(const GoogleServiceAuthError& error); + const std::vector<std::string>& scopes) = 0; - // Other helpers. - static GURL MakeGetAccessTokenUrl(); - static std::string MakeGetAccessTokenBody( - const std::string& client_id, - const std::string& client_secret, - const std::string& refresh_token, - const std::vector<std::string>& scopes); + // Cancels the current request and informs the consumer. + virtual void CancelRequest() = 0; - static bool ParseGetAccessTokenSuccessResponse( - const net::URLFetcher* source, - std::string* access_token, - int* expires_in); + protected: + // Fires |OnGetTokenSuccess| on |consumer_|. + void FireOnGetTokenSuccess(const std::string& access_token, + const base::Time& expiration_time); - static bool ParseGetAccessTokenFailureResponse( - const net::URLFetcher* source, - std::string* error); + // Fires |OnGetTokenFailure| on |consumer_|. + void FireOnGetTokenFailure(const GoogleServiceAuthError& error); - // State that is set during construction. + private: OAuth2AccessTokenConsumer* const consumer_; - net::URLRequestContextGetter* const getter_; - State state_; - - // While a fetch is in progress. - scoped_ptr<net::URLFetcher> fetcher_; - std::string client_id_; - std::string client_secret_; - std::string refresh_token_; - std::vector<std::string> scopes_; - - friend class OAuth2AccessTokenFetcherTest; - FRIEND_TEST_ALL_PREFIXES(OAuth2AccessTokenFetcherTest, - ParseGetAccessTokenResponse); - FRIEND_TEST_ALL_PREFIXES(OAuth2AccessTokenFetcherTest, - MakeGetAccessTokenBody); DISALLOW_COPY_AND_ASSIGN(OAuth2AccessTokenFetcher); }; |