Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1198)

Unified Diff: components/autofill/core/browser/wallet/real_pan_wallet_client.h

Issue 873583007: Add OAuth2 token to RealPanRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ) Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/wallet/real_pan_wallet_client.h
diff --git a/components/autofill/core/browser/wallet/real_pan_wallet_client.h b/components/autofill/core/browser/wallet/real_pan_wallet_client.h
index c58168d4a666da8fa92c1f80aa8a196dc296d6d4..3323f919c70aab83531627552e53ce9e72d46a84 100644
--- a/components/autofill/core/browser/wallet/real_pan_wallet_client.h
+++ b/components/autofill/core/browser/wallet/real_pan_wallet_client.h
@@ -7,8 +7,11 @@
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
+#include "google_apis/gaia/oauth2_token_service.h"
#include "net/url_request/url_fetcher_delegate.h"
+class IdentityProvider;
+
namespace net {
class URLFetcher;
class URLRequestContextGetter;
@@ -23,17 +26,17 @@ namespace wallet {
// RealPanWalletClient is modelled on WalletClient. Whereas the latter is used
// for requestAutocomplete-related requests, RealPanWalletClient is used to
// import user data from Wallet for normal web Autofill.
-class RealPanWalletClient : public net::URLFetcherDelegate {
+class RealPanWalletClient : public net::URLFetcherDelegate,
+ public OAuth2TokenService::Consumer {
public:
class Delegate {
public:
+ // The identity provider used to get OAuth2 tokens.
+ virtual IdentityProvider* GetIdentityProvider() = 0;
+
// Returns the real PAN retrieved from Wallet. |real_pan| will be empty
// on failure.
virtual void OnDidGetRealPan(const std::string& real_pan) = 0;
-
- // Called to retrieve the OAuth2 token that should be used for requests
- // to Wallet.
- virtual std::string GetOAuth2Token() = 0;
};
// |context_getter| is reference counted so it has no lifetime or ownership
@@ -44,6 +47,10 @@ class RealPanWalletClient : public net::URLFetcherDelegate {
~RealPanWalletClient() override;
+ // Starts fetching the OAuth2 token in anticipation of future wallet requests.
+ // Called as an optimization, but not strictly necessary.
+ void Prepare();
+
// The user has attempted to unmask a card with the given cvc.
void UnmaskCard(const CreditCard& card, const std::string& cvc);
@@ -54,6 +61,19 @@ class RealPanWalletClient : public net::URLFetcherDelegate {
// net::URLFetcherDelegate:
void OnURLFetchComplete(const net::URLFetcher* source) override;
+ // OAuth2TokenService::Consumer implementation.
+ void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
+ const std::string& access_token,
+ const base::Time& expiration_time) override;
+ void OnGetTokenFailure(const OAuth2TokenService::Request* request,
+ const GoogleServiceAuthError& error) override;
+
+ // Initiates a new OAuth2 token request.
+ void StartTokenFetch();
+
+ // Adds the token to |request_| and starts the request.
+ void SetOAuth2TokenAndStartRequest();
+
// The context for the request. Ensures the gdToken cookie is set as a header
// in the requests to Online Wallet if it is present.
scoped_refptr<net::URLRequestContextGetter> context_getter_;
@@ -62,9 +82,15 @@ class RealPanWalletClient : public net::URLFetcherDelegate {
// of a request to Online Wallet.
Delegate* const delegate_; // must outlive |this|.
- // The current request object.
+ // The current Wallet request object.
scoped_ptr<net::URLFetcher> request_;
+ // The current OAuth2 token request object;
+ scoped_ptr<OAuth2TokenService::Request> access_token_request_;
+
+ // The OAuth2 token, or empty if not fetched.
+ std::string access_token_;
+
base::WeakPtrFactory<RealPanWalletClient> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(RealPanWalletClient);

Powered by Google App Engine
This is Rietveld 408576698