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

Unified Diff: chrome/browser/autofill/wallet/wallet_client.cc

Issue 12434004: Move remaining Autofill code to //components/autofill. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix long lines Created 7 years, 9 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: chrome/browser/autofill/wallet/wallet_client.cc
diff --git a/chrome/browser/autofill/wallet/wallet_client.cc b/chrome/browser/autofill/wallet/wallet_client.cc
deleted file mode 100644
index 2fe89eb8e686832f50a59d81bdd933d8d4ab5ed8..0000000000000000000000000000000000000000
--- a/chrome/browser/autofill/wallet/wallet_client.cc
+++ /dev/null
@@ -1,664 +0,0 @@
-// Copyright (c) 2012 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.
-
-#include "chrome/browser/autofill/wallet/wallet_client.h"
-
-#include "base/bind.h"
-#include "base/json/json_reader.h"
-#include "base/json/json_writer.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/string_util.h"
-#include "chrome/browser/autofill/wallet/cart.h"
-#include "chrome/browser/autofill/wallet/instrument.h"
-#include "chrome/browser/autofill/wallet/wallet_address.h"
-#include "chrome/browser/autofill/wallet/wallet_client_observer.h"
-#include "chrome/browser/autofill/wallet/wallet_items.h"
-#include "chrome/browser/autofill/wallet/wallet_service_url.h"
-#include "crypto/random.h"
-#include "google_apis/google_api_keys.h"
-#include "googleurl/src/gurl.h"
-#include "net/http/http_status_code.h"
-#include "net/url_request/url_fetcher.h"
-#include "net/url_request/url_request_context_getter.h"
-
-namespace autofill {
-namespace wallet {
-
-namespace {
-
-const char kJsonMimeType[] = "application/json";
-const size_t kOneTimePadLength = 6;
-
-std::string AutocheckoutStatusToString(AutocheckoutStatus status) {
- switch (status) {
- case MISSING_FIELDMAPPING:
- return "MISSING_FIELDMAPPING";
- case MISSING_ADVANCE:
- return "MISSING_ADVANCE";
- case CANNOT_PROCEED:
- return "CANNOT_PROCEED";
- case SUCCESS:
- // SUCCESS cannot be sent to the server as it will result in a failure.
- NOTREACHED();
- return "ERROR";
- }
- NOTREACHED();
- return "NOT_POSSIBLE";
-}
-
-std::string DialogTypeToFeatureString(autofill::DialogType dialog_type) {
- switch (dialog_type) {
- case DIALOG_TYPE_REQUEST_AUTOCOMPLETE:
- return "REQUEST_AUTOCOMPLETE";
- case DIALOG_TYPE_AUTOCHECKOUT:
- return "AUTOCHECKOUT";
- }
- NOTREACHED();
- return "NOT_POSSIBLE";
-}
-
-// Gets and parses required actions from a SaveToWallet response. Returns
-// false if any unknown required actions are seen and true otherwise.
-void GetRequiredActionsForSaveToWallet(
- const base::DictionaryValue& dict,
- std::vector<RequiredAction>* required_actions) {
- const ListValue* required_action_list;
- if (!dict.GetList("required_action", &required_action_list))
- return;
-
- for (size_t i = 0; i < required_action_list->GetSize(); ++i) {
- std::string action_string;
- if (required_action_list->GetString(i, &action_string)) {
- RequiredAction action = ParseRequiredActionFromString(action_string);
- if (!ActionAppliesToSaveToWallet(action)) {
- DLOG(ERROR) << "Response from Google wallet with bad required action:"
- " \"" << action_string << "\"";
- required_actions->clear();
- return;
- }
- required_actions->push_back(action);
- }
- }
-}
-
-// Keys for JSON communication with the Online Wallet server.
-const char kAcceptedLegalDocumentKey[] = "accepted_legal_document";
-const char kApiKeyKey[] = "api_key";
-const char kAuthResultKey[] = "auth_result";
-const char kCartKey[] = "cart";
-const char kEncryptedOtpKey[] = "encrypted_otp";
-const char kFeatureKey[] = "feature";
-const char kGoogleTransactionIdKey[] = "google_transaction_id";
-const char kInstrumentIdKey[] = "instrument_id";
-const char kInstrumentKey[] = "instrument";
-const char kInstrumentEscrowHandleKey[] = "instrument_escrow_handle";
-const char kInstrumentPhoneNumberKey[] = "instrument_phone_number";
-const char kMerchantDomainKey[] = "merchant_domain";
-const char kReasonKey[] = "reason";
-const char kRiskParamsKey[] = "risk_params";
-const char kSelectedAddressIdKey[] = "selected_address_id";
-const char kSelectedInstrumentIdKey[] = "selected_instrument_id";
-const char kSessionMaterialKey[] = "session_material";
-const char kShippingAddressIdKey[] = "shipping_address_id";
-const char kShippingAddressKey[] = "shipping_address";
-const char kSuccessKey[] = "success";
-const char kUpgradedBillingAddressKey[] = "upgraded_billing_address";
-const char kUpgradedInstrumentIdKey[] = "upgraded_instrument_id";
-
-} // namespace
-
-
-WalletClient::WalletClient(net::URLRequestContextGetter* context_getter,
- WalletClientObserver* observer)
- : context_getter_(context_getter),
- observer_(observer),
- request_type_(NO_PENDING_REQUEST),
- one_time_pad_(kOneTimePadLength),
- ALLOW_THIS_IN_INITIALIZER_LIST(
- encryption_escrow_client_(context_getter, this)) {
- DCHECK(context_getter_);
- DCHECK(observer_);
-}
-
-WalletClient::~WalletClient() {}
-
-void WalletClient::AcceptLegalDocuments(
- const std::vector<std::string>& document_ids,
- const std::string& google_transaction_id,
- const GURL& source_url) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::AcceptLegalDocuments,
- base::Unretained(this),
- document_ids,
- google_transaction_id,
- source_url));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- request_type_ = ACCEPT_LEGAL_DOCUMENTS;
-
- base::DictionaryValue request_dict;
- request_dict.SetString(kApiKeyKey, google_apis::GetAPIKey());
- request_dict.SetString(kGoogleTransactionIdKey, google_transaction_id);
- request_dict.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
- ListValue* docs_list = new ListValue();
- for (std::vector<std::string>::const_iterator it = document_ids.begin();
- it != document_ids.end();
- ++it) {
- docs_list->AppendString(*it);
- }
- request_dict.Set(kAcceptedLegalDocumentKey, docs_list);
-
- std::string post_body;
- base::JSONWriter::Write(&request_dict, &post_body);
-
- MakeWalletRequest(GetAcceptLegalDocumentsUrl(), post_body);
-}
-
-void WalletClient::AuthenticateInstrument(
- const std::string& instrument_id,
- const std::string& card_verification_number,
- const std::string& obfuscated_gaia_id) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::AuthenticateInstrument,
- base::Unretained(this),
- instrument_id,
- card_verification_number,
- obfuscated_gaia_id));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- DCHECK(pending_request_body_.empty());
- request_type_ = AUTHENTICATE_INSTRUMENT;
-
- pending_request_body_.SetString(kApiKeyKey, google_apis::GetAPIKey());
- pending_request_body_.SetString(kRiskParamsKey, GetRiskParams());
- pending_request_body_.SetString(kInstrumentIdKey, instrument_id);
-
- encryption_escrow_client_.EscrowCardVerificationNumber(
- card_verification_number, obfuscated_gaia_id);
-}
-
-void WalletClient::GetFullWallet(const std::string& instrument_id,
- const std::string& address_id,
- const GURL& source_url,
- const Cart& cart,
- const std::string& google_transaction_id,
- autofill::DialogType dialog_type) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::GetFullWallet,
- base::Unretained(this),
- instrument_id,
- address_id,
- source_url,
- cart,
- google_transaction_id,
- dialog_type));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- DCHECK(pending_request_body_.empty());
- request_type_ = GET_FULL_WALLET;
-
- pending_request_body_.SetString(kApiKeyKey, google_apis::GetAPIKey());
- pending_request_body_.SetString(kRiskParamsKey, GetRiskParams());
- pending_request_body_.SetString(kSelectedInstrumentIdKey, instrument_id);
- pending_request_body_.SetString(kSelectedAddressIdKey, address_id);
- pending_request_body_.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
- pending_request_body_.SetString(kGoogleTransactionIdKey,
- google_transaction_id);
- pending_request_body_.Set(kCartKey, cart.ToDictionary().release());
- pending_request_body_.SetString(kFeatureKey,
- DialogTypeToFeatureString(dialog_type));
-
- crypto::RandBytes(&(one_time_pad_[0]), one_time_pad_.size());
- encryption_escrow_client_.EncryptOneTimePad(one_time_pad_);
-}
-
-void WalletClient::GetWalletItems(const GURL& source_url) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::GetWalletItems,
- base::Unretained(this),
- source_url));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- request_type_ = GET_WALLET_ITEMS;
-
- base::DictionaryValue request_dict;
- request_dict.SetString(kApiKeyKey, google_apis::GetAPIKey());
- request_dict.SetString(kRiskParamsKey, GetRiskParams());
- request_dict.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
-
- std::string post_body;
- base::JSONWriter::Write(&request_dict, &post_body);
-
- MakeWalletRequest(GetGetWalletItemsUrl(), post_body);
-}
-
-void WalletClient::SaveAddress(const Address& shipping_address,
- const GURL& source_url) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::SaveAddress,
- base::Unretained(this),
- shipping_address,
- source_url));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- request_type_ = SAVE_ADDRESS;
-
- base::DictionaryValue request_dict;
- request_dict.SetString(kApiKeyKey, google_apis::GetAPIKey());
- request_dict.SetString(kRiskParamsKey, GetRiskParams());
- request_dict.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
-
- request_dict.Set(kShippingAddressKey,
- shipping_address.ToDictionaryWithID().release());
-
- std::string post_body;
- base::JSONWriter::Write(&request_dict, &post_body);
-
- MakeWalletRequest(GetSaveToWalletUrl(), post_body);
-}
-
-void WalletClient::SaveInstrument(
- const Instrument& instrument,
- const std::string& obfuscated_gaia_id,
- const GURL& source_url) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::SaveInstrument,
- base::Unretained(this),
- instrument,
- obfuscated_gaia_id,
- source_url));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- DCHECK(pending_request_body_.empty());
- request_type_ = SAVE_INSTRUMENT;
-
- pending_request_body_.SetString(kApiKeyKey, google_apis::GetAPIKey());
- pending_request_body_.SetString(kRiskParamsKey, GetRiskParams());
- pending_request_body_.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
-
- pending_request_body_.Set(kInstrumentKey,
- instrument.ToDictionary().release());
- pending_request_body_.SetString(kInstrumentPhoneNumberKey,
- instrument.address().phone_number());
-
- encryption_escrow_client_.EscrowInstrumentInformation(instrument,
- obfuscated_gaia_id);
-}
-
-void WalletClient::SaveInstrumentAndAddress(
- const Instrument& instrument,
- const Address& address,
- const std::string& obfuscated_gaia_id,
- const GURL& source_url) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::SaveInstrumentAndAddress,
- base::Unretained(this),
- instrument,
- address,
- obfuscated_gaia_id,
- source_url));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- DCHECK(pending_request_body_.empty());
- request_type_ = SAVE_INSTRUMENT_AND_ADDRESS;
-
- pending_request_body_.SetString(kApiKeyKey, google_apis::GetAPIKey());
- pending_request_body_.SetString(kRiskParamsKey, GetRiskParams());
- pending_request_body_.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
-
- pending_request_body_.Set(kInstrumentKey,
- instrument.ToDictionary().release());
- pending_request_body_.SetString(kInstrumentPhoneNumberKey,
- instrument.address().phone_number());
-
- pending_request_body_.Set(kShippingAddressKey,
- address.ToDictionaryWithID().release());
-
- encryption_escrow_client_.EscrowInstrumentInformation(instrument,
- obfuscated_gaia_id);
-}
-
-void WalletClient::SendAutocheckoutStatus(
- AutocheckoutStatus status,
- const GURL& source_url,
- const std::string& google_transaction_id) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::SendAutocheckoutStatus,
- base::Unretained(this),
- status,
- source_url,
- google_transaction_id));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- request_type_ = SEND_STATUS;
-
- base::DictionaryValue request_dict;
- request_dict.SetString(kApiKeyKey, google_apis::GetAPIKey());
- bool success = status == SUCCESS;
- request_dict.SetBoolean(kSuccessKey, success);
- request_dict.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
- if (!success)
- request_dict.SetString(kReasonKey, AutocheckoutStatusToString(status));
- request_dict.SetString(kGoogleTransactionIdKey, google_transaction_id);
-
- std::string post_body;
- base::JSONWriter::Write(&request_dict, &post_body);
-
- MakeWalletRequest(GetSendStatusUrl(), post_body);
-}
-
-void WalletClient::UpdateInstrument(
- const std::string& instrument_id,
- const Address& billing_address,
- const GURL& source_url) {
- if (HasRequestInProgress()) {
- pending_requests_.push(base::Bind(&WalletClient::UpdateInstrument,
- base::Unretained(this),
- instrument_id,
- billing_address,
- source_url));
- return;
- }
-
- DCHECK_EQ(NO_PENDING_REQUEST, request_type_);
- request_type_ = UPDATE_INSTRUMENT;
-
- base::DictionaryValue request_dict;
- request_dict.SetString(kApiKeyKey, google_apis::GetAPIKey());
- request_dict.SetString(kRiskParamsKey, GetRiskParams());
- request_dict.SetString(kMerchantDomainKey,
- source_url.GetWithEmptyPath().spec());
-
- request_dict.SetString(kUpgradedInstrumentIdKey, instrument_id);
- request_dict.SetString(kInstrumentPhoneNumberKey,
- billing_address.phone_number());
- request_dict.Set(kUpgradedBillingAddressKey,
- billing_address.ToDictionaryWithoutID().release());
-
- std::string post_body;
- base::JSONWriter::Write(&request_dict, &post_body);
-
- MakeWalletRequest(GetSaveToWalletUrl(), post_body);
-}
-
-bool WalletClient::HasRequestInProgress() const {
- return request_.get() != NULL;
-}
-
-void WalletClient::CancelPendingRequests() {
- while (!pending_requests_.empty()) {
- pending_requests_.pop();
- }
-}
-
-void WalletClient::MakeWalletRequest(const GURL& url,
- const std::string& post_body) {
- DCHECK(!HasRequestInProgress());
-
- request_.reset(net::URLFetcher::Create(
- 0, url, net::URLFetcher::POST, this));
- request_->SetRequestContext(context_getter_);
- DVLOG(1) << "url=" << url << ", post_body=" << post_body;
- request_->SetUploadData(kJsonMimeType, post_body);
- request_->Start();
-}
-
-// TODO(ahutter): Add manual retry logic if it's necessary.
-void WalletClient::OnURLFetchComplete(
- const net::URLFetcher* source) {
- DCHECK_EQ(source, request_.get());
- DVLOG(1) << "Got response from " << source->GetOriginalURL();
-
- std::string data;
- source->GetResponseAsString(&data);
- DVLOG(1) << "Response body: " << data;
-
- scoped_ptr<base::DictionaryValue> response_dict;
-
- int response_code = source->GetResponseCode();
- switch (response_code) {
- // HTTP_BAD_REQUEST means the arguments are invalid. No point retrying.
- case net::HTTP_BAD_REQUEST: {
- request_type_ = NO_PENDING_REQUEST;
- observer_->OnWalletError();
- return;
- }
- // HTTP_OK holds a valid response and HTTP_INTERNAL_SERVER_ERROR holds an
- // error code and message for the user.
- case net::HTTP_OK:
- case net::HTTP_INTERNAL_SERVER_ERROR: {
- scoped_ptr<Value> message_value(base::JSONReader::Read(data));
- if (message_value.get() &&
- message_value->IsType(Value::TYPE_DICTIONARY)) {
- response_dict.reset(
- static_cast<base::DictionaryValue*>(message_value.release()));
- }
- if (response_code == net::HTTP_INTERNAL_SERVER_ERROR) {
- request_type_ = NO_PENDING_REQUEST;
- // TODO(ahutter): Do something with the response. See
- // http://crbug.com/164410.
- observer_->OnWalletError();
- return;
- }
- break;
- }
- // Anything else is an error.
- default: {
- request_type_ = NO_PENDING_REQUEST;
- observer_->OnNetworkError(response_code);
- return;
- }
- }
-
- RequestType type = request_type_;
- request_type_ = NO_PENDING_REQUEST;
-
- if (!(type == ACCEPT_LEGAL_DOCUMENTS || type == SEND_STATUS) &&
- !response_dict) {
- HandleMalformedResponse();
- return;
- }
-
- switch (type) {
- case ACCEPT_LEGAL_DOCUMENTS:
- observer_->OnDidAcceptLegalDocuments();
- break;
-
- case AUTHENTICATE_INSTRUMENT: {
- std::string auth_result;
- if (response_dict->GetString(kAuthResultKey, &auth_result)) {
- std::string trimmed;
- TrimWhitespaceASCII(auth_result,
- TRIM_ALL,
- &trimmed);
- observer_->OnDidAuthenticateInstrument(
- LowerCaseEqualsASCII(trimmed, "success"));
- } else {
- HandleMalformedResponse();
- }
- break;
- }
-
- case SEND_STATUS:
- observer_->OnDidSendAutocheckoutStatus();
- break;
-
- case GET_FULL_WALLET: {
- scoped_ptr<FullWallet> full_wallet(
- FullWallet::CreateFullWallet(*response_dict));
- if (full_wallet) {
- full_wallet->set_one_time_pad(one_time_pad_);
- observer_->OnDidGetFullWallet(full_wallet.Pass());
- } else {
- HandleMalformedResponse();
- }
- break;
- }
-
- case GET_WALLET_ITEMS: {
- scoped_ptr<WalletItems> wallet_items(
- WalletItems::CreateWalletItems(*response_dict));
- if (wallet_items)
- observer_->OnDidGetWalletItems(wallet_items.Pass());
- else
- HandleMalformedResponse();
- break;
- }
-
- case SAVE_ADDRESS: {
- std::string shipping_address_id;
- std::vector<RequiredAction> required_actions;
- GetRequiredActionsForSaveToWallet(*response_dict, &required_actions);
- if (response_dict->GetString(kShippingAddressIdKey,
- &shipping_address_id) ||
- !required_actions.empty()) {
- observer_->OnDidSaveAddress(shipping_address_id, required_actions);
- } else {
- HandleMalformedResponse();
- }
- break;
- }
-
- case SAVE_INSTRUMENT: {
- std::string instrument_id;
- std::vector<RequiredAction> required_actions;
- GetRequiredActionsForSaveToWallet(*response_dict, &required_actions);
- if (response_dict->GetString(kInstrumentIdKey, &instrument_id) ||
- !required_actions.empty()) {
- observer_->OnDidSaveInstrument(instrument_id, required_actions);
- } else {
- HandleMalformedResponse();
- }
- break;
- }
-
- case SAVE_INSTRUMENT_AND_ADDRESS: {
- std::string instrument_id;
- response_dict->GetString(kInstrumentIdKey, &instrument_id);
- std::string shipping_address_id;
- response_dict->GetString(kShippingAddressIdKey,
- &shipping_address_id);
- std::vector<RequiredAction> required_actions;
- GetRequiredActionsForSaveToWallet(*response_dict, &required_actions);
- if ((!instrument_id.empty() && !shipping_address_id.empty()) ||
- !required_actions.empty()) {
- observer_->OnDidSaveInstrumentAndAddress(instrument_id,
- shipping_address_id,
- required_actions);
- } else {
- HandleMalformedResponse();
- }
- break;
- }
-
- case UPDATE_INSTRUMENT: {
- std::string instrument_id;
- std::vector<RequiredAction> required_actions;
- GetRequiredActionsForSaveToWallet(*response_dict, &required_actions);
- if (response_dict->GetString(kInstrumentIdKey, &instrument_id) ||
- !required_actions.empty()) {
- observer_->OnDidUpdateInstrument(instrument_id, required_actions);
- } else {
- HandleMalformedResponse();
- }
- break;
- }
-
- case NO_PENDING_REQUEST:
- NOTREACHED();
- }
-
- request_.reset();
- StartNextPendingRequest();
-}
-
-void WalletClient::StartNextPendingRequest() {
- if (pending_requests_.empty())
- return;
-
- base::Closure next_request = pending_requests_.front();
- pending_requests_.pop();
- next_request.Run();
-}
-
-void WalletClient::HandleMalformedResponse() {
- // Called to inform exponential backoff logic of the error.
- request_->ReceivedContentWasMalformed();
- observer_->OnMalformedResponse();
-}
-
-void WalletClient::OnDidEncryptOneTimePad(
- const std::string& encrypted_one_time_pad,
- const std::string& session_material) {
- DCHECK_EQ(GET_FULL_WALLET, request_type_);
- pending_request_body_.SetString(kEncryptedOtpKey, encrypted_one_time_pad);
- pending_request_body_.SetString(kSessionMaterialKey, session_material);
-
- std::string post_body;
- base::JSONWriter::Write(&pending_request_body_, &post_body);
- pending_request_body_.Clear();
-
- MakeWalletRequest(GetGetFullWalletUrl(), post_body);
-}
-
-void WalletClient::OnDidEscrowInstrumentInformation(
- const std::string& escrow_handle) {
- DCHECK(request_type_ == SAVE_INSTRUMENT ||
- request_type_ == SAVE_INSTRUMENT_AND_ADDRESS);
-
- pending_request_body_.SetString(kInstrumentEscrowHandleKey, escrow_handle);
-
- std::string post_body;
- base::JSONWriter::Write(&pending_request_body_, &post_body);
- pending_request_body_.Clear();
-
- MakeWalletRequest(GetSaveToWalletUrl(), post_body);
-}
-
-void WalletClient::OnDidEscrowCardVerificationNumber(
- const std::string& escrow_handle) {
- DCHECK_EQ(AUTHENTICATE_INSTRUMENT, request_type_);
- pending_request_body_.SetString(kInstrumentEscrowHandleKey, escrow_handle);
-
- std::string post_body;
- base::JSONWriter::Write(&pending_request_body_, &post_body);
- pending_request_body_.Clear();
-
- MakeWalletRequest(GetAuthenticateInstrumentUrl(), post_body);
-}
-
-void WalletClient::OnNetworkError(int response_code) {
- observer_->OnNetworkError(response_code);
-}
-
-void WalletClient::OnMalformedResponse() {
- observer_->OnMalformedResponse();
-}
-
-} // namespace wallet
-} // namespace autofill
« no previous file with comments | « chrome/browser/autofill/wallet/wallet_client.h ('k') | chrome/browser/autofill/wallet/wallet_client_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698