Commit 52ca03bf authored by siashah's avatar siashah Committed by Commit Bot

Add card_issuer to CreditCard class and set/get from autofill_table

The default value for the card_issuer is set to ISSUER_UNKNOWN, which
is a no-op.

Please refer to bug for design doc.

Bug: 1063426
Change-Id: Iadfab36e31f48549216346278863d08d1e025513
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145970Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Reviewed-by: default avatarJared Saul <jsaul@google.com>
Commit-Queue: Siddharth Shah <siashah@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758946}
parent d4887fb2
......@@ -114,7 +114,8 @@ CreditCard::CreditCard(const std::string& guid, const std::string& origin)
network_(kGenericCard),
expiration_month_(0),
expiration_year_(0),
server_status_(OK) {}
server_status_(OK),
card_issuer_(ISSUER_UNKNOWN) {}
CreditCard::CreditCard(RecordType type, const std::string& server_id)
: CreditCard() {
......@@ -515,6 +516,7 @@ void CreditCard::operator=(const CreditCard& credit_card) {
temp_card_first_name_ = credit_card.temp_card_first_name_;
temp_card_last_name_ = credit_card.temp_card_last_name_;
nickname_ = credit_card.nickname_;
card_issuer_ = credit_card.card_issuer_;
set_guid(credit_card.guid());
set_origin(credit_card.origin());
......@@ -592,11 +594,22 @@ int CreditCard::Compare(const CreditCard& credit_card) const {
return comparison;
if (static_cast<int>(server_status_) <
static_cast<int>(credit_card.server_status_))
static_cast<int>(credit_card.server_status_)) {
return -1;
}
if (static_cast<int>(server_status_) >
static_cast<int>(credit_card.server_status_))
static_cast<int>(credit_card.server_status_)) {
return 1;
}
if (static_cast<int>(card_issuer_) <
static_cast<int>(credit_card.card_issuer_)) {
return -1;
}
if (static_cast<int>(card_issuer_) >
static_cast<int>(credit_card.card_issuer_)) {
return 1;
}
// Do not distinguish masked server cards from full server cards as this is
// not needed and not desired - we want to identify masked server card from
......@@ -971,8 +984,8 @@ std::ostream& operator<<(std::ostream& os, const CreditCard& credit_card) {
<< " " << credit_card.bank_name() << " "
<< " " << credit_card.record_type() << " "
<< credit_card.use_count() << " " << credit_card.use_date() << " "
<< credit_card.billing_address_id() << " "
<< credit_card.nickname();
<< credit_card.billing_address_id() << " " << credit_card.nickname()
<< " " << credit_card.card_issuer();
}
void CreditCard::SetNameOnCardFromSeparateParts() {
......
......@@ -60,6 +60,12 @@ class CreditCard : public AutofillDataModel {
OK,
};
// The Issuer for the card.
enum Issuer {
ISSUER_UNKNOWN = 0,
GOOGLE = 1,
};
CreditCard(const std::string& guid, const std::string& origin);
// Creates a server card. The type must be MASKED_SERVER_CARD or
......@@ -138,6 +144,9 @@ class CreditCard : public AutofillDataModel {
// with whitespaces, and trim leading/trailing whitespaces).
void SetNickname(const base::string16& nickname);
Issuer card_issuer() const { return card_issuer_; }
void set_card_issuer(Issuer card_issuer) { card_issuer_ = card_issuer; }
// For use in STL containers.
void operator=(const CreditCard& credit_card);
......@@ -343,6 +352,10 @@ class CreditCard : public AutofillDataModel {
// The nickname of the card. May be empty when nickname is not set.
base::string16 nickname_;
// The issuer for the card. This is populated from the sync response. It has a
// default value of CreditCard::ISSUER_UNKNOWN.
Issuer card_issuer_;
};
// So we can compare CreditCards with EXPECT_EQ().
......
......@@ -676,6 +676,11 @@ TEST(CreditCardTest, Compare) {
b.set_record_type(LOCAL_CARD);
EXPECT_LT(0, a.Compare(b));
// Card with UNKNOWN_ISSUER is different from GOOGLE issued card.
a.set_card_issuer(CreditCard::ISSUER_UNKNOWN);
b.set_card_issuer(CreditCard::GOOGLE);
EXPECT_GT(0, a.Compare(b));
// Different values produce non-zero results.
test::SetCreditCardInfo(&a, "Jimmy", nullptr, nullptr, nullptr, "");
test::SetCreditCardInfo(&b, "Ringo", nullptr, nullptr, nullptr, "");
......
......@@ -1229,7 +1229,8 @@ bool AutofillTable::GetServerCreditCards(
"exp_year," // 9
"metadata.billing_address_id," // 10
"bank_name," // 11
"nickname " // 12
"nickname," // 12
"card_issuer " // 13
"FROM masked_credit_cards masked "
"LEFT OUTER JOIN unmasked_credit_cards USING (id) "
"LEFT OUTER JOIN server_card_metadata metadata USING (id)"));
......@@ -1273,6 +1274,8 @@ bool AutofillTable::GetServerCreditCards(
card->set_billing_address_id(s.ColumnString(index++));
card->set_bank_name(s.ColumnString(index++));
card->SetNickname(s.ColumnString16(index++));
card->set_card_issuer(
static_cast<CreditCard::Issuer>(s.ColumnInt(index++)));
credit_cards->push_back(std::move(card));
}
return s.Succeeded();
......@@ -1531,8 +1534,9 @@ void AutofillTable::SetServerCardsData(
"exp_month," // 5
"exp_year," // 6
"bank_name," // 7
"nickname)" // 8
"VALUES (?,?,?,?,?,?,?,?,?)"));
"nickname," // 8
"card_issuer)" // 9
"VALUES (?,?,?,?,?,?,?,?,?,?)"));
int index;
for (const CreditCard& card : credit_cards) {
DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type());
......@@ -1548,6 +1552,7 @@ void AutofillTable::SetServerCardsData(
card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
masked_insert.BindString(index++, card.bank_name());
masked_insert.BindString16(index++, card.nickname());
masked_insert.BindInt(index++, static_cast<int>(card.card_issuer()));
masked_insert.Run();
masked_insert.Reset(true);
}
......@@ -2962,8 +2967,9 @@ void AutofillTable::AddMaskedCreditCards(
"exp_month," // 5
"exp_year," // 6
"bank_name," // 7
"nickname)" // 8
"VALUES (?,?,?,?,?,?,?,?,?)"));
"nickname," // 8
"card_issuer)" // 9
"VALUES (?,?,?,?,?,?,?,?,?,?)"));
int index;
for (const CreditCard& card : credit_cards) {
DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type());
......@@ -2979,6 +2985,7 @@ void AutofillTable::AddMaskedCreditCards(
card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
masked_insert.BindString(index++, card.bank_name());
masked_insert.BindString16(index++, card.nickname());
masked_insert.BindInt(index++, static_cast<int>(card.card_issuer()));
masked_insert.Run();
masked_insert.Reset(true);
......
......@@ -1892,6 +1892,7 @@ TEST_F(AutofillTableTest, SetGetServerCards) {
inputs[1].SetServerStatus(CreditCard::EXPIRED);
base::string16 nickname = ASCIIToUTF16("Grocery card");
inputs[1].SetNickname(nickname);
inputs[1].set_card_issuer(CreditCard::Issuer::GOOGLE);
test::SetServerCreditCards(table_.get(), inputs);
......@@ -1919,6 +1920,9 @@ TEST_F(AutofillTableTest, SetGetServerCards) {
EXPECT_TRUE(outputs[0]->nickname().empty());
EXPECT_EQ(nickname, outputs[1]->nickname());
EXPECT_EQ(CreditCard::Issuer::ISSUER_UNKNOWN, outputs[0]->card_issuer());
EXPECT_EQ(CreditCard::Issuer::GOOGLE, outputs[1]->card_issuer());
}
TEST_F(AutofillTableTest, SetGetRemoveServerCardMetadata) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment