| Index: components/autofill/browser/autocheckout_request_manager.h | 
| diff --git a/components/autofill/browser/autocheckout_request_manager.h b/components/autofill/browser/autocheckout_request_manager.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..2f3878995a717c1b5ea6333682e8841322ef4a95 | 
| --- /dev/null | 
| +++ b/components/autofill/browser/autocheckout_request_manager.h | 
| @@ -0,0 +1,98 @@ | 
| +// Copyright 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 COMPONENTS_AUTOFILL_BROWSER_AUTOCHECKOUT_REQUEST_MANAGER_H_ | 
| +#define COMPONENTS_AUTOFILL_BROWSER_AUTOCHECKOUT_REQUEST_MANAGER_H_ | 
| + | 
| +#include "base/supports_user_data.h" | 
| +#include "components/autofill/browser/autofill_metrics.h" | 
| +#include "components/autofill/browser/wallet/wallet_client.h" | 
| +#include "components/autofill/browser/wallet/wallet_client_delegate.h" | 
| +#include "components/autofill/common/autocheckout_status.h" | 
| +#include "googleurl/src/gurl.h" | 
| + | 
| +namespace content { | 
| +class BrowserContext; | 
| +} | 
| + | 
| +namespace net { | 
| +class URLRequestContextGetter; | 
| +} | 
| + | 
| +namespace autofill { | 
| + | 
| +// AutocheckoutRequestManager's only responsiblity is to make sure any | 
| +// SendAutocheckoutStatus calls succeed regardless of any actions the user may | 
| +// make in the browser i.e. closing a tab, the requestAutocomplete dialog, etc. | 
| +// To that end, it is a piece of user data tied to the BrowserContext. | 
| +class AutocheckoutRequestManager : public base::SupportsUserData::Data, | 
| +                                   public wallet::WalletClientDelegate { | 
| + public: | 
| +  virtual ~AutocheckoutRequestManager(); | 
| + | 
| +  // Creates a new AutocheckoutRequestManager and stores it as user data in | 
| +  // |browser_context| if one does not already exist. | 
| +  static void CreateForBrowserContext( | 
| +      content::BrowserContext* browser_context); | 
| + | 
| +  // Retrieves the AutocheckoutRequestManager for |browser_context| if one | 
| +  // exists. | 
| +  static AutocheckoutRequestManager* FromBrowserContext( | 
| +      content::BrowserContext* browser_context); | 
| + | 
| +  // Sends the |status| of an Autocheckout flow to Online Wallet using | 
| +  // |wallet_client_|. | 
| +  void SendAutocheckoutStatus(AutocheckoutStatus status, | 
| +                              const GURL& source_url, | 
| +                              const std::string& google_transaction_id); | 
| + | 
| +  // wallet::WalletClientDelegate: | 
| +  virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE; | 
| +  virtual DialogType GetDialogType() const OVERRIDE; | 
| +  virtual std::string GetRiskData() const OVERRIDE; | 
| +  virtual void OnDidAcceptLegalDocuments() OVERRIDE; | 
| +  virtual void OnDidAuthenticateInstrument(bool success) OVERRIDE; | 
| +  virtual void OnDidGetFullWallet( | 
| +      scoped_ptr<wallet::FullWallet> full_wallet) OVERRIDE; | 
| +  virtual void OnDidGetWalletItems( | 
| +      scoped_ptr<wallet::WalletItems> wallet_items) OVERRIDE; | 
| +  virtual void OnDidSaveAddress( | 
| +      const std::string& address_id, | 
| +      const std::vector<wallet::RequiredAction>& required_actions) OVERRIDE; | 
| +  virtual void OnDidSaveInstrument( | 
| +      const std::string& instrument_id, | 
| +      const std::vector<wallet::RequiredAction>& required_actions) OVERRIDE; | 
| +  virtual void OnDidSaveInstrumentAndAddress( | 
| +      const std::string& instrument_id, | 
| +      const std::string& address_id, | 
| +      const std::vector<wallet::RequiredAction>& required_actions) OVERRIDE; | 
| +  virtual void OnDidUpdateAddress( | 
| +      const std::string& address_id, | 
| +      const std::vector<wallet::RequiredAction>& required_actions) OVERRIDE; | 
| +  virtual void OnDidUpdateInstrument( | 
| +      const std::string& instrument_id, | 
| +      const std::vector<wallet::RequiredAction>& required_actions) OVERRIDE; | 
| +  virtual void OnWalletError( | 
| +      wallet::WalletClient::ErrorType error_type) OVERRIDE; | 
| +  virtual void OnMalformedResponse() OVERRIDE; | 
| +  virtual void OnNetworkError(int response_code) OVERRIDE; | 
| + | 
| + private: | 
| +  // |request_context_getter| is passed in to construct |wallet_client_|. | 
| +  AutocheckoutRequestManager( | 
| +      net::URLRequestContextGetter* request_context_getter); | 
| + | 
| +  // Logs various UMA metrics. | 
| +  AutofillMetrics metric_logger_; | 
| + | 
| +  // Makes requests to Online Wallet. The only request this class is configured | 
| +  // to make is SendAutocheckoutStatus. | 
| +  wallet::WalletClient wallet_client_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(AutocheckoutRequestManager); | 
| +}; | 
| + | 
| +}  // namespace autofill | 
| + | 
| +#endif  // COMPONENTS_AUTOFILL_BROWSER_AUTOCHECKOUT_REQUEST_MANAGER_H_ | 
|  |