diff options
author | paisa@chromium.org <paisa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-21 16:43:02 +0000 |
---|---|---|
committer | paisa@chromium.org <paisa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-21 16:43:02 +0000 |
commit | 692eec4f8f41cf55531e6c5ba552f56b88f672db (patch) | |
tree | 82b68462e63525dfc65bdec8b6bd7b905dd19af0 /components/autofill/content/browser/wallet | |
parent | fcc06522316c5a3d6c42c809f96af61845286052 (diff) | |
download | chromium_src-692eec4f8f41cf55531e6c5ba552f56b88f672db.zip chromium_src-692eec4f8f41cf55531e6c5ba552f56b88f672db.tar.gz chromium_src-692eec4f8f41cf55531e6c5ba552f56b88f672db.tar.bz2 |
Handle amex_disallowed field in Wallet response.
BUG=286438
Review URL: https://chromiumcodereview.appspot.com/24163003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224598 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components/autofill/content/browser/wallet')
5 files changed, 58 insertions, 20 deletions
diff --git a/components/autofill/content/browser/wallet/wallet_items.cc b/components/autofill/content/browser/wallet/wallet_items.cc index cbd3d66..0ef44d2 100644 --- a/components/autofill/content/browser/wallet/wallet_items.cc +++ b/components/autofill/content/browser/wallet/wallet_items.cc @@ -392,12 +392,14 @@ 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, - const std::string& obfuscated_gaia_id) + const std::string& obfuscated_gaia_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), - obfuscated_gaia_id_(obfuscated_gaia_id) {} + obfuscated_gaia_id_(obfuscated_gaia_id), + amex_permission_(amex_permission) {} WalletItems::~WalletItems() {} @@ -441,11 +443,18 @@ scoped_ptr<WalletItems> if (!dictionary.GetString("obfuscated_gaia_id", &obfuscated_gaia_id)) DVLOG(1) << "Response from Google wallet missing obfuscated gaia id"; + 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, - obfuscated_gaia_id)); + obfuscated_gaia_id, + amex_permission)); const ListValue* legal_docs; if (dictionary.GetList("required_legal_document", &legal_docs)) { diff --git a/components/autofill/content/browser/wallet/wallet_items.h b/components/autofill/content/browser/wallet/wallet_items.h index 48820d0..9838ec83d 100644 --- a/components/autofill/content/browser/wallet/wallet_items.h +++ b/components/autofill/content/browser/wallet/wallet_items.h @@ -38,6 +38,11 @@ namespace wallet { class WalletItemsTest; +enum AmexPermission { + AMEX_ALLOWED, + AMEX_DISALLOWED, +}; + // WalletItems is a collection of cards and addresses that a user picks from to // construct a full wallet. However, it also provides a transaction ID which // must be used throughout all API calls being made using this data. @@ -252,11 +257,12 @@ class WalletItems { const std::vector<LegalDocument*>& legal_documents() const { return legal_documents_.get(); } + bool is_amex_allowed() const { return amex_permission_ == AMEX_ALLOWED; } private: friend class WalletItemsTest; friend scoped_ptr<WalletItems> GetTestWalletItemsWithDefaultIds( - const std::string&, const std::string&); + const std::string&, const std::string&, AmexPermission); FRIEND_TEST_ALL_PREFIXES(WalletItemsTest, CreateWalletItems); FRIEND_TEST_ALL_PREFIXES(WalletItemsTest, CreateWalletItemsWithRequiredActions); @@ -265,7 +271,8 @@ class WalletItems { const std::string& google_transaction_id, const std::string& default_instrument_id, const std::string& default_address_id, - const std::string& obfuscated_gaia_id); + const std::string& obfuscated_gaia_id, + AmexPermission amex_permission); // Actions that must be completed by the user before a FullWallet can be // issued to them by the Online Wallet service. @@ -292,6 +299,9 @@ class WalletItems { // Legal documents the user must accept before using Online Wallet. ScopedVector<LegalDocument> legal_documents_; + // Whether Google Wallet allows American Express card for this merchant. + AmexPermission amex_permission_; + DISALLOW_COPY_AND_ASSIGN(WalletItems); }; diff --git a/components/autofill/content/browser/wallet/wallet_items_unittest.cc b/components/autofill/content/browser/wallet/wallet_items_unittest.cc index 83f8b19..75da0fd 100644 --- a/components/autofill/content/browser/wallet/wallet_items_unittest.cc +++ b/components/autofill/content/browser/wallet/wallet_items_unittest.cc @@ -63,7 +63,8 @@ const char kMaskedInstrumentMissingStatus[] = " \"phone_number\":\"phone_number\"," " \"country_code\":\"country_code\"" " }," - " \"object_id\":\"object_id\"" + " \"object_id\":\"object_id\"," + " \"amex_disallowed\":true" "}"; const char kMaskedInstrumentMissingType[] = @@ -278,6 +279,7 @@ const char kWalletItemsMissingGoogleTransactionId[] = " ]," " \"default_address_id\":\"default_address_id\"," " \"obfuscated_gaia_id\":\"obfuscated_gaia_id\"," + " \"amex_disallowed\":true," " \"required_legal_document\":" " [" " {" @@ -343,7 +345,8 @@ const char kWalletItems[] = " }" " ]," " \"default_address_id\":\"default_address_id\"," - " \"obfuscated_gaia_id\":\"obfuscated_gaia_id\""; + " \"obfuscated_gaia_id\":\"obfuscated_gaia_id\"," + " \"amex_disallowed\":true"; const char kRequiredLegalDocument[] = " ," @@ -484,7 +487,8 @@ TEST_F(WalletItemsTest, CreateWalletItemsWithRequiredActions) { std::string(), std::string(), std::string(), - std::string()); + std::string(), + AMEX_DISALLOWED); EXPECT_EQ(expected, *WalletItems::CreateWalletItems(*dict)); ASSERT_FALSE(required_actions.empty()); @@ -493,7 +497,8 @@ TEST_F(WalletItemsTest, CreateWalletItemsWithRequiredActions) { std::string(), std::string(), std::string(), - std::string()); + std::string(), + AMEX_DISALLOWED); EXPECT_NE(expected, different_required_actions); } @@ -507,6 +512,12 @@ TEST_F(WalletItemsTest, CreateWalletItemsMissingGoogleTransactionId) { EXPECT_EQ(NULL, WalletItems::CreateWalletItems(*dict).get()); } +TEST_F(WalletItemsTest, CreateWalletItemsMissingAmexDisallowed) { + SetUpDictionary(std::string(kWalletItems) + std::string(kCloseJson)); + EXPECT_TRUE(dict->Remove("amex_disallowed", NULL)); + EXPECT_FALSE(WalletItems::CreateWalletItems(*dict)->is_amex_allowed()); +} + TEST_F(WalletItemsTest, CreateWalletItems) { SetUpDictionary(std::string(kWalletItems) + std::string(kCloseJson)); std::vector<RequiredAction> required_actions; @@ -514,7 +525,8 @@ TEST_F(WalletItemsTest, CreateWalletItems) { "google_transaction_id", "default_instrument_id", "default_address_id", - "obfuscated_gaia_id"); + "obfuscated_gaia_id", + AMEX_DISALLOWED); scoped_ptr<Address> billing_address(new Address("country_code", ASCIIToUTF16("name"), diff --git a/components/autofill/content/browser/wallet/wallet_test_util.cc b/components/autofill/content/browser/wallet/wallet_test_util.cc index 2311e5c..0a15c3e 100644 --- a/components/autofill/content/browser/wallet/wallet_test_util.cc +++ b/components/autofill/content/browser/wallet/wallet_test_util.cc @@ -179,13 +179,15 @@ scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentInvalid() { WalletItems::MaskedInstrument::DECLINED); } -scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentAmex() { +scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentAmex( + AmexPermission amex_permission) { return GetTestMaskedInstrumentWithDetails( "default_instrument_id", GetTestAddress(), WalletItems::MaskedInstrument::AMEX, - // Amex cards are marked with status AMEX_NOT_SUPPORTED by the server. - WalletItems::MaskedInstrument::AMEX_NOT_SUPPORTED); + (amex_permission == AMEX_ALLOWED) + ? WalletItems::MaskedInstrument::VALID + : WalletItems::MaskedInstrument::AMEX_NOT_SUPPORTED); } scoped_ptr<WalletItems::MaskedInstrument> GetTestNonDefaultMaskedInstrument() { @@ -224,20 +226,23 @@ scoped_ptr<Address> GetTestNonDefaultShippingAddress() { return address.Pass(); } -scoped_ptr<WalletItems> GetTestWalletItems() { +scoped_ptr<WalletItems> GetTestWalletItems(AmexPermission amex_permission) { return GetTestWalletItemsWithDefaultIds("default_instrument_id", - "default_address_id"); + "default_address_id", + amex_permission); } scoped_ptr<WalletItems> GetTestWalletItemsWithDefaultIds( const std::string& default_instrument_id, - const std::string& default_address_id) { + const std::string& default_address_id, + AmexPermission amex_permission) { return scoped_ptr<WalletItems>( new wallet::WalletItems(std::vector<RequiredAction>(), "google_transaction_id", default_instrument_id, default_address_id, - "obfuscated_gaia_id")); + "obfuscated_gaia_id", + amex_permission)); } } // namespace wallet diff --git a/components/autofill/content/browser/wallet/wallet_test_util.h b/components/autofill/content/browser/wallet/wallet_test_util.h index 781ea19..b9bfbdd 100644 --- a/components/autofill/content/browser/wallet/wallet_test_util.h +++ b/components/autofill/content/browser/wallet/wallet_test_util.h @@ -27,7 +27,8 @@ scoped_ptr<WalletItems::LegalDocument> GetTestLegalDocument(); scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrument(); scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentExpired(); scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentInvalid(); -scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentAmex(); +scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentAmex( + AmexPermission amex_permission); scoped_ptr<WalletItems::MaskedInstrument> GetTestNonDefaultMaskedInstrument(); scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentWithId( const std::string& id); @@ -42,10 +43,11 @@ scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentWithDetails( scoped_ptr<Address> GetTestSaveableAddress(); scoped_ptr<Address> GetTestShippingAddress(); scoped_ptr<Address> GetTestNonDefaultShippingAddress(); -scoped_ptr<WalletItems> GetTestWalletItems(); +scoped_ptr<WalletItems> GetTestWalletItems(AmexPermission amex_permission); scoped_ptr<WalletItems> GetTestWalletItemsWithDefaultIds( const std::string& default_instrument_id, - const std::string& default_address_id); + const std::string& default_address_id, + AmexPermission amex_permission); } // namespace wallet } // namespace autofill |