summaryrefslogtreecommitdiffstats
path: root/components/autofill
diff options
context:
space:
mode:
authorpaisa@chromium.org <paisa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-21 16:43:02 +0000
committerpaisa@chromium.org <paisa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-21 16:43:02 +0000
commit692eec4f8f41cf55531e6c5ba552f56b88f672db (patch)
tree82b68462e63525dfc65bdec8b6bd7b905dd19af0 /components/autofill
parentfcc06522316c5a3d6c42c809f96af61845286052 (diff)
downloadchromium_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')
-rw-r--r--components/autofill/content/browser/wallet/wallet_items.cc15
-rw-r--r--components/autofill/content/browser/wallet/wallet_items.h14
-rw-r--r--components/autofill/content/browser/wallet/wallet_items_unittest.cc22
-rw-r--r--components/autofill/content/browser/wallet/wallet_test_util.cc19
-rw-r--r--components/autofill/content/browser/wallet/wallet_test_util.h8
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