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

Unified Diff: components/autofill/content/browser/wallet/wallet_items.cc

Issue 1288093004: rAc Wallet extirpation round 4: clean out RPC code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gn Created 5 years, 4 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/content/browser/wallet/wallet_items.cc
diff --git a/components/autofill/content/browser/wallet/wallet_items.cc b/components/autofill/content/browser/wallet/wallet_items.cc
deleted file mode 100644
index c660277a5b36972e6e1c02913a354175116fec3c..0000000000000000000000000000000000000000
--- a/components/autofill/content/browser/wallet/wallet_items.cc
+++ /dev/null
@@ -1,596 +0,0 @@
-// 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.
-
-#include "components/autofill/content/browser/wallet/wallet_items.h"
-
-#include <limits>
-
-#include "base/logging.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/values.h"
-#include "components/autofill/content/browser/wallet/gaia_account.h"
-#include "components/autofill/content/browser/wallet/wallet_service_url.h"
-#include "components/autofill/core/browser/autofill_sync_constants.h"
-#include "components/autofill/core/browser/autofill_type.h"
-#include "components/autofill/core/browser/credit_card.h"
-#include "grit/components_scaled_resources.h"
-#include "grit/components_strings.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/image/image.h"
-#include "url/gurl.h"
-
-namespace autofill {
-namespace wallet {
-
-namespace {
-
-// TODO(estade): move to base/.
-template<class T>
-bool VectorsAreEqual(const std::vector<T*>& a, const std::vector<T*>& b) {
- if (a.size() != b.size())
- return false;
-
- for (size_t i = 0; i < a.size(); ++i) {
- if (*a[i] != *b[i])
- return false;
- }
-
- return true;
-}
-
-WalletItems::MaskedInstrument::Type
- TypeFromString(const std::string& type_string) {
- if (type_string == kSyncCardTypeVisa)
- return WalletItems::MaskedInstrument::VISA;
- if (type_string == kSyncCardTypeMasterCard)
- return WalletItems::MaskedInstrument::MASTER_CARD;
- if (type_string == kSyncCardTypeAmex)
- return WalletItems::MaskedInstrument::AMEX;
- if (type_string == kSyncCardTypeDiscover)
- return WalletItems::MaskedInstrument::DISCOVER;
- if (type_string == kSyncCardTypeSolo)
- return WalletItems::MaskedInstrument::SOLO;
- if (type_string == kSyncCardTypeSolo)
- return WalletItems::MaskedInstrument::MAESTRO;
- if (type_string == kSyncCardTypeSwitch)
- return WalletItems::MaskedInstrument::SWITCH;
- return WalletItems::MaskedInstrument::UNKNOWN;
-}
-
-WalletItems::MaskedInstrument::Status
- StatusFromString(const std::string& status_string) {
- if (status_string == "AMEX_NOT_SUPPORTED")
- return WalletItems::MaskedInstrument::AMEX_NOT_SUPPORTED;
- if (status_string == "PENDING")
- return WalletItems::MaskedInstrument::PENDING;
- if (status_string == "VALID")
- return WalletItems::MaskedInstrument::VALID;
- if (status_string == "DECLINED")
- return WalletItems::MaskedInstrument::DECLINED;
- if (status_string == "DISABLED_FOR_THIS_MERCHANT")
- return WalletItems::MaskedInstrument::DISABLED_FOR_THIS_MERCHANT;
- if (status_string == "UNSUPPORTED_COUNTRY")
- return WalletItems::MaskedInstrument::UNSUPPORTED_COUNTRY;
- if (status_string == "EXPIRED")
- return WalletItems::MaskedInstrument::EXPIRED;
- if (status_string == "BILLING_INCOMPLETE")
- return WalletItems::MaskedInstrument::BILLING_INCOMPLETE;
- return WalletItems::MaskedInstrument::INAPPLICABLE;
-}
-
-base::string16 DisplayStringFromType(WalletItems::MaskedInstrument::Type type) {
- switch (type) {
- case WalletItems::MaskedInstrument::AMEX:
- return CreditCard::TypeForDisplay(kAmericanExpressCard);
- case WalletItems::MaskedInstrument::DISCOVER:
- return CreditCard::TypeForDisplay(kDiscoverCard);
- case WalletItems::MaskedInstrument::MASTER_CARD:
- return CreditCard::TypeForDisplay(kMasterCard);
- case WalletItems::MaskedInstrument::VISA:
- return CreditCard::TypeForDisplay(kVisaCard);
- default:
- return CreditCard::TypeForDisplay(kGenericCard);
- }
-}
-
-} // anonymous namespace
-
-WalletItems::MaskedInstrument::MaskedInstrument(
- const base::string16& descriptive_name,
- const WalletItems::MaskedInstrument::Type& type,
- const base::string16& last_four_digits,
- int expiration_month,
- int expiration_year,
- scoped_ptr<Address> address,
- const WalletItems::MaskedInstrument::Status& status,
- const std::string& object_id)
- : descriptive_name_(descriptive_name),
- type_(type),
- last_four_digits_(last_four_digits),
- expiration_month_(expiration_month),
- expiration_year_(expiration_year),
- address_(address.Pass()),
- status_(status),
- object_id_(object_id) {
- DCHECK(address_);
-}
-
-WalletItems::MaskedInstrument::~MaskedInstrument() {}
-
-scoped_ptr<WalletItems::MaskedInstrument>
- WalletItems::MaskedInstrument::CreateMaskedInstrument(
- const base::DictionaryValue& dictionary) {
- std::string type_string;
- Type type;
- if (dictionary.GetString("type", &type_string)) {
- type = TypeFromString(type_string);
- } else {
- DLOG(ERROR) << "Response from Google Payments missing card type";
- return scoped_ptr<MaskedInstrument>();
- }
-
- base::string16 last_four_digits;
- if (!dictionary.GetString("last_four_digits", &last_four_digits)) {
- DLOG(ERROR) << "Response from Google Payments missing last four digits";
- return scoped_ptr<MaskedInstrument>();
- }
-
- std::string status_string;
- Status status;
- if (dictionary.GetString("status", &status_string)) {
- status = StatusFromString(status_string);
- } else {
- DLOG(ERROR) << "Response from Google Payments missing status";
- return scoped_ptr<MaskedInstrument>();
- }
-
- std::string object_id;
- if (!dictionary.GetString("object_id", &object_id)) {
- DLOG(ERROR) << "Response from Google Payments missing object id";
- return scoped_ptr<MaskedInstrument>();
- }
-
- const base::DictionaryValue* address_dict;
- if (!dictionary.GetDictionary("billing_address", &address_dict)) {
- DLOG(ERROR) << "Response from Google wallet missing address";
- return scoped_ptr<MaskedInstrument>();
- }
- scoped_ptr<Address> address = Address::CreateDisplayAddress(*address_dict);
-
- if (!address) {
- DLOG(ERROR) << "Response from Google wallet contained malformed address";
- return scoped_ptr<MaskedInstrument>();
- }
-
- int expiration_month;
- if (!dictionary.GetInteger("expiration_month", &expiration_month))
- DVLOG(1) << "Response from Google Payments missing expiration month";
-
- int expiration_year;
- if (!dictionary.GetInteger("expiration_year", &expiration_year))
- DVLOG(1) << "Response from Google Payments missing expiration year";
-
- base::string16 descriptive_name;
- if (!dictionary.GetString("descriptive_name", &descriptive_name))
- DVLOG(1) << "Response from Google Payments missing descriptive name";
-
- return scoped_ptr<MaskedInstrument>(new MaskedInstrument(descriptive_name,
- type,
- last_four_digits,
- expiration_month,
- expiration_year,
- address.Pass(),
- status,
- object_id));
-}
-
-bool WalletItems::MaskedInstrument::operator==(
- const WalletItems::MaskedInstrument& other) const {
- if (descriptive_name_ != other.descriptive_name_)
- return false;
- if (type_ != other.type_)
- return false;
- if (last_four_digits_ != other.last_four_digits_)
- return false;
- if (expiration_month_ != other.expiration_month_)
- return false;
- if (expiration_year_ != other.expiration_year_)
- return false;
- if (address_) {
- if (other.address_) {
- if (*address_ != *other.address_)
- return false;
- } else {
- return false;
- }
- } else if (other.address_) {
- return false;
- }
- if (status_ != other.status_)
- return false;
- if (object_id_ != other.object_id_)
- return false;
- return true;
-}
-
-bool WalletItems::MaskedInstrument::operator!=(
- const WalletItems::MaskedInstrument& other) const {
- return !(*this == other);
-}
-
-const WalletItems::MaskedInstrument* WalletItems::GetInstrumentById(
- const std::string& object_id) const {
- if (object_id.empty())
- return NULL;
-
- for (size_t i = 0; i < instruments_.size(); ++i) {
- if (instruments_[i]->object_id() == object_id)
- return instruments_[i];
- }
-
- return NULL;
-}
-
-bool WalletItems::HasRequiredAction(RequiredAction action) const {
- DCHECK(ActionAppliesToWalletItems(action));
- return std::find(required_actions_.begin(),
- required_actions_.end(),
- action) != required_actions_.end();
-}
-
-bool WalletItems::SupportsCard(const base::string16& card_number,
- base::string16* message) const {
- const char* const card_type = CreditCard::GetCreditCardType(card_number);
-
- if (card_type == kVisaCard ||
- card_type == kMasterCard ||
- card_type == kDiscoverCard) {
- return true;
- }
-
- if (card_type == kAmericanExpressCard) {
- if (amex_permission_ == AMEX_ALLOWED)
- return true;
-
- *message = l10n_util::GetStringUTF16(
- IDS_AUTOFILL_CREDIT_CARD_NOT_SUPPORTED_BY_WALLET_FOR_MERCHANT);
- return false;
- }
-
- *message = l10n_util::GetStringUTF16(
- IDS_AUTOFILL_CREDIT_CARD_NOT_SUPPORTED_BY_WALLET);
- return false;
-}
-
-std::string WalletItems::ObfuscatedGaiaId() const {
- if (active_account_index_ >= gaia_accounts_.size())
- return std::string();
-
- return gaia_accounts_[active_account_index_]->obfuscated_id();
-}
-
-base::string16 WalletItems::MaskedInstrument::DisplayName() const {
-#if defined(OS_ANDROID)
- // TODO(aruslan): improve this stub implementation.
- return descriptive_name();
-#else
- return descriptive_name();
-#endif
-}
-
-base::string16 WalletItems::MaskedInstrument::DisplayNameDetail() const {
-#if defined(OS_ANDROID)
- // TODO(aruslan): improve this stub implementation.
- return address().DisplayName();
-#else
- return base::string16();
-#endif
-}
-
-base::string16 WalletItems::MaskedInstrument::TypeAndLastFourDigits() const {
- // TODO(dbeam): i18n.
- return DisplayStringFromType(type_) + base::ASCIIToUTF16(" - ") +
- last_four_digits();
-}
-
-const gfx::Image& WalletItems::MaskedInstrument::CardIcon() const {
- int idr = 0;
- switch (type_) {
- case AMEX:
- idr = IDR_AUTOFILL_CC_AMEX;
- break;
-
- case DISCOVER:
- idr = IDR_AUTOFILL_CC_DISCOVER;
- break;
-
- case MASTER_CARD:
- idr = IDR_AUTOFILL_CC_MASTERCARD;
- break;
-
- case VISA:
- idr = IDR_AUTOFILL_CC_VISA;
- break;
-
- case SOLO:
- case MAESTRO:
- case SWITCH:
- case UNKNOWN:
- idr = IDR_AUTOFILL_CC_GENERIC;
- break;
- }
-
- return ResourceBundle::GetSharedInstance().GetImageNamed(idr);
-}
-
-base::string16 WalletItems::MaskedInstrument::GetInfo(
- const AutofillType& type,
- const std::string& app_locale) const {
- if (type.group() != CREDIT_CARD)
- return address().GetInfo(type, app_locale);
-
- switch (type.GetStorableType()) {
- case CREDIT_CARD_NAME:
- return address().recipient_name();
-
- case CREDIT_CARD_NUMBER:
- return DisplayName();
-
- case CREDIT_CARD_EXP_4_DIGIT_YEAR:
- return base::IntToString16(expiration_year());
-
- case CREDIT_CARD_VERIFICATION_CODE:
- break;
-
- case CREDIT_CARD_TYPE:
- return DisplayStringFromType(type_);
-
- default:
- NOTREACHED();
- }
-
- return base::string16();
-}
-
-WalletItems::LegalDocument::~LegalDocument() {}
-
-scoped_ptr<WalletItems::LegalDocument>
- WalletItems::LegalDocument::CreateLegalDocument(
- const base::DictionaryValue& dictionary) {
- std::string id;
- if (!dictionary.GetString("legal_document_id", &id)) {
- DLOG(ERROR) << "Response from Google Payments missing legal document id";
- return scoped_ptr<LegalDocument>();
- }
-
- base::string16 display_name;
- if (!dictionary.GetString("display_name", &display_name)) {
- DLOG(ERROR) << "Response from Google Payments missing display name";
- return scoped_ptr<LegalDocument>();
- }
-
- std::string url;
- if (!dictionary.GetString("url", &url)) {
- DLOG(ERROR) << "Response from Google Payments missing URL";
- return scoped_ptr<LegalDocument>();
- }
-
- return scoped_ptr<LegalDocument>(
- new LegalDocument(id, GURL(url), display_name));
-}
-
-scoped_ptr<WalletItems::LegalDocument>
- WalletItems::LegalDocument::CreatePrivacyPolicyDocument() {
- return scoped_ptr<LegalDocument>(new LegalDocument(
- std::string(), GetPrivacyNoticeUrl(),
- l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PRIVACY_POLICY_LINK)));
-}
-
-bool WalletItems::LegalDocument::operator==(const LegalDocument& other) const {
- return id_ == other.id_ &&
- url_ == other.url_ &&
- display_name_ == other.display_name_;
-}
-
-bool WalletItems::LegalDocument::operator!=(const LegalDocument& other) const {
- return !(*this == other);
-}
-
-WalletItems::LegalDocument::LegalDocument(const std::string& id,
- const GURL& url,
- const base::string16& display_name)
- : id_(id), url_(url), display_name_(display_name) {
-}
-
-WalletItems::WalletItems(const std::vector<RequiredAction>& required_actions,
- const std::string& google_transaction_id,
- const std::string& default_instrument_id,
- const std::string& default_address_id,
- AmexPermission amex_permission)
- : required_actions_(required_actions),
- google_transaction_id_(google_transaction_id),
- default_instrument_id_(default_instrument_id),
- default_address_id_(default_address_id),
- active_account_index_(std::numeric_limits<size_t>::max()),
- amex_permission_(amex_permission) {}
-
-WalletItems::~WalletItems() {}
-
-scoped_ptr<WalletItems>
- WalletItems::CreateWalletItems(const base::DictionaryValue& dictionary) {
- std::vector<RequiredAction> required_action;
- const base::ListValue* required_action_list;
- if (dictionary.GetList("required_action", &required_action_list)) {
- 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 (!ActionAppliesToWalletItems(action)) {
- DLOG(ERROR) << "Response from Google wallet with bad required action:"
- " \"" << action_string << "\"";
- return scoped_ptr<WalletItems>();
- }
- required_action.push_back(action);
- }
- }
- } else {
- DVLOG(1) << "Response from Google wallet missing required actions";
- }
-
- std::string google_transaction_id;
- if (!dictionary.GetString("google_transaction_id", &google_transaction_id) &&
- required_action.empty()) {
- DLOG(ERROR) << "Response from Google wallet missing google transaction id";
- return scoped_ptr<WalletItems>();
- }
-
- std::string default_instrument_id;
- if (!dictionary.GetString("default_instrument_id", &default_instrument_id))
- DVLOG(1) << "Response from Google wallet missing default instrument id";
-
- std::string default_address_id;
- if (!dictionary.GetString("default_address_id", &default_address_id))
- DVLOG(1) << "Response from Google wallet missing default_address_id";
-
- // obfuscated_gaia_id is deprecated.
-
- bool amex_disallowed = true;
- if (!dictionary.GetBoolean("amex_disallowed", &amex_disallowed))
- DVLOG(1) << "Response from Google wallet missing the amex_disallowed field";
- AmexPermission amex_permission =
- amex_disallowed ? AMEX_DISALLOWED : AMEX_ALLOWED;
-
- scoped_ptr<WalletItems> wallet_items(new WalletItems(required_action,
- google_transaction_id,
- default_instrument_id,
- default_address_id,
- amex_permission));
- std::vector<std::string> gaia_accounts;
- const base::ListValue* gaia_profiles;
- if (dictionary.GetList("gaia_profile", &gaia_profiles)) {
- for (size_t i = 0; i < gaia_profiles->GetSize(); ++i) {
- const base::DictionaryValue* account_dict;
- std::string email;
- if (!gaia_profiles->GetDictionary(i, &account_dict))
- continue;
-
- scoped_ptr<GaiaAccount> gaia_account(
- GaiaAccount::Create(*account_dict));
- if (gaia_account)
- wallet_items->AddAccount(gaia_account.Pass());
- }
- } else {
- DVLOG(1) << "Response from Google wallet missing GAIA accounts";
- }
-
- const base::ListValue* legal_docs;
- if (dictionary.GetList("required_legal_document", &legal_docs)) {
- for (size_t i = 0; i < legal_docs->GetSize(); ++i) {
- const base::DictionaryValue* legal_doc_dict;
- if (legal_docs->GetDictionary(i, &legal_doc_dict)) {
- scoped_ptr<LegalDocument> legal_doc(
- LegalDocument::CreateLegalDocument(*legal_doc_dict));
- if (legal_doc)
- wallet_items->AddLegalDocument(legal_doc.Pass());
- else
- return scoped_ptr<WalletItems>();
- }
- }
-
- if (!legal_docs->empty()) {
- // Always append the privacy policy link as well.
- wallet_items->AddLegalDocument(
- LegalDocument::CreatePrivacyPolicyDocument());
- }
- } else {
- DVLOG(1) << "Response from Google wallet missing legal docs";
- }
-
- const base::ListValue* instruments;
- if (dictionary.GetList("instrument", &instruments)) {
- for (size_t i = 0; i < instruments->GetSize(); ++i) {
- const base::DictionaryValue* instrument_dict;
- if (instruments->GetDictionary(i, &instrument_dict)) {
- scoped_ptr<MaskedInstrument> instrument(
- MaskedInstrument::CreateMaskedInstrument(*instrument_dict));
- if (instrument)
- wallet_items->AddInstrument(instrument.Pass());
- }
- }
- } else {
- DVLOG(1) << "Response from Google wallet missing instruments";
- }
-
- const base::ListValue* addresses;
- if (dictionary.GetList("address", &addresses)) {
- for (size_t i = 0; i < addresses->GetSize(); ++i) {
- const base::DictionaryValue* address_dict;
- if (addresses->GetDictionary(i, &address_dict)) {
- scoped_ptr<Address> address(
- Address::CreateAddressWithID(*address_dict));
- if (address)
- wallet_items->AddAddress(address.Pass());
- }
- }
- } else {
- DVLOG(1) << "Response from Google wallet missing addresses";
- }
-
- const base::ListValue* allowed_shipping_countries;
- if (dictionary.GetList("allowed_shipping_spec_by_country",
- &allowed_shipping_countries)) {
- for (size_t i = 0; i < allowed_shipping_countries->GetSize(); ++i) {
- const base::DictionaryValue* country_spec;
- std::string country_code;
- if (allowed_shipping_countries->GetDictionary(i, &country_spec) &&
- country_spec->GetString("country_code", &country_code)) {
- wallet_items->AddAllowedShippingCountry(country_code);
- }
- }
- } else {
- DVLOG(1) << "Response from Google wallet missing allowed shipping"
- " countries";
- }
-
- return wallet_items.Pass();
-}
-
-void WalletItems::AddAccount(scoped_ptr<GaiaAccount> account) {
- if (account->index() != gaia_accounts_.size()) {
- DVLOG(1) << "Tried to add account out of order";
- return;
- }
-
- if (account->is_active())
- active_account_index_ = account->index();
-
- gaia_accounts_.push_back(account.release());
-}
-
-bool WalletItems::operator==(const WalletItems& other) const {
- return google_transaction_id_ == other.google_transaction_id_ &&
- default_instrument_id_ == other.default_instrument_id_ &&
- default_address_id_ == other.default_address_id_ &&
- required_actions_ == other.required_actions_ &&
- // This check is technically redundant, but is useful for tests.
- ObfuscatedGaiaId() == other.ObfuscatedGaiaId() &&
- active_account_index() == other.active_account_index() &&
- VectorsAreEqual<GaiaAccount>(gaia_accounts(),
- other.gaia_accounts()) &&
- VectorsAreEqual<MaskedInstrument>(instruments(),
- other.instruments()) &&
- VectorsAreEqual<Address>(addresses(), other.addresses()) &&
- VectorsAreEqual<LegalDocument>(legal_documents(),
- other.legal_documents()) &&
- allowed_shipping_countries() == other.allowed_shipping_countries();
-}
-
-bool WalletItems::operator!=(const WalletItems& other) const {
- return !(*this == other);
-}
-
-} // namespace wallet
-} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698