[Autofill] Add metrics for Wallet errors and required actions.
Also, rename WalletClientObserver -> WalletClientDelegate, and add some getters
to the interface.
BUG=165570
[email protected]
Review URL: https://chromiumcodereview.appspot.com/12758007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188141 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/components/autofill/browser/wallet/wallet_client_delegate.h b/components/autofill/browser/wallet/wallet_client_delegate.h
new file mode 100644
index 0000000..23cb417
--- /dev/null
+++ b/components/autofill/browser/wallet/wallet_client_delegate.h
@@ -0,0 +1,106 @@
+// 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 COMPONENTS_AUTOFILL_BROWSER_WALLET_WALLET_CLIENT_OBSERVER_H_
+#define COMPONENTS_AUTOFILL_BROWSER_WALLET_WALLET_CLIENT_OBSERVER_H_
+
+#include <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "components/autofill/browser/autofill_manager_delegate.h"
+
+class AutofillMetrics;
+
+namespace autofill {
+namespace wallet {
+
+class FullWallet;
+class WalletItems;
+
+// WalletClientDelegate is to be implemented any classes making calls with
+// WalletClient. The appropriate callback method will be called on
+// WalletClientDelegate with the response from the Online Wallet backend.
+class WalletClientDelegate {
+ public:
+ // --------------------------------------
+ // Accessors called when making requests.
+ // --------------------------------------
+
+ // Returns the MetricLogger instance that should be used for logging Online
+ // Wallet metrics.
+ virtual const AutofillMetrics& GetMetricLogger() const = 0;
+
+ // Returns the dialog type that the delegate corresponds to.
+ virtual DialogType GetDialogType() const = 0;
+
+ // --------------------------------------------------------------------------
+ // Callbacks called with responses from the Online Wallet backend.
+ // --------------------------------------------------------------------------
+
+ // Called when an AcceptLegalDocuments request finishes successfully.
+ virtual void OnDidAcceptLegalDocuments() = 0;
+
+ // Called when an AuthenticateInstrument request finishes successfully.
+ virtual void OnDidAuthenticateInstrument(bool success) = 0;
+
+ // Called when a GetFullWallet request finishes successfully. Ownership is
+ // transferred to implementer of this interface.
+ virtual void OnDidGetFullWallet(scoped_ptr<FullWallet> full_wallet) = 0;
+
+ // Called when a GetWalletItems request finishes successfully. Ownership is
+ // transferred to implementer of this interface.
+ virtual void OnDidGetWalletItems(scoped_ptr<WalletItems> wallet_items) = 0;
+
+ // Called when a SaveAddress request finishes successfully. |address_id| can
+ // be used in subsequent GetFullWallet calls. |required_actions| is populated
+ // if there was a validation error with the data being saved.
+ virtual void OnDidSaveAddress(
+ const std::string& address_id,
+ const std::vector<RequiredAction>& required_actions) = 0;
+
+ // Called when a SaveInstrument request finishes sucessfully. |instrument_id|
+ // can be used in subsequent GetFullWallet calls. |required_actions| is
+ // populated if there was a validation error with the data being saved.
+ virtual void OnDidSaveInstrument(
+ const std::string& instrument_id,
+ const std::vector<RequiredAction>& required_actions) = 0;
+
+ // Called when a SaveInstrumentAndAddress request finishes succesfully.
+ // |instrument_id| and |address_id| can be used in subsequent
+ // GetFullWallet calls. |required_actions| is populated if there was a
+ // validation error with the data being saved.
+ virtual void OnDidSaveInstrumentAndAddress(
+ const std::string& instrument_id,
+ const std::string& address_id,
+ const std::vector<RequiredAction>& required_actions) = 0;
+
+ // Called when a SendAutocheckoutStatus request finishes successfully.
+ virtual void OnDidSendAutocheckoutStatus() = 0;
+
+ // Called when an UpdateInstrument request finishes successfully.
+ // |required_actions| is populated if there was a validation error with the
+ // data being saved.
+ virtual void OnDidUpdateInstrument(
+ const std::string& instrument_id,
+ const std::vector<RequiredAction>& required_actions) = 0;
+
+ // TODO(ahutter): This is going to need more arguments, probably an error
+ // code and a message for the user.
+ // Called when a request fails due to an Online Wallet error.
+ virtual void OnWalletError() = 0;
+
+ // Called when a request fails due to a malformed response.
+ virtual void OnMalformedResponse() = 0;
+
+ // Called when a request fails due to a network error.
+ virtual void OnNetworkError(int response_code) = 0;
+
+ protected:
+ virtual ~WalletClientDelegate() {}
+};
+
+} // namespace wallet
+} // namespace autofill
+
+#endif // COMPONENTS_AUTOFILL_BROWSER_WALLET_WALLET_CLIENT_OBSERVER_H_