Commit b0398ace authored by Anne Lim's avatar Anne Lim Committed by Commit Bot

[Autofill] Update Sync Bridge to save instrument_id

Please see bug for design doc.

Bug: 1121806
Change-Id: I9c67bc3487a64eb1b07b4d0334a63081f85c66fa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2404947Reviewed-by: default avatarJared Saul <jsaul@google.com>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Commit-Queue: Anne Lim <annelim@google.com>
Cr-Commit-Position: refs/heads/master@{#806731}
parent c9ab1fb0
...@@ -39,6 +39,7 @@ namespace { ...@@ -39,6 +39,7 @@ namespace {
// Constants for the credit card. // Constants for the credit card.
const int kDefaultCardExpMonth = 8; const int kDefaultCardExpMonth = 8;
const int kDefaultCardExpYear = 2087; const int kDefaultCardExpYear = 2087;
const int kDefaultInstrumentId = 123;
const char kDefaultCardLastFour[] = "1234"; const char kDefaultCardLastFour[] = "1234";
const char kDefaultCardName[] = "Patrick Valenzuela"; const char kDefaultCardName[] = "Patrick Valenzuela";
const sync_pb::WalletMaskedCreditCard_WalletCardType kDefaultCardType = const sync_pb::WalletMaskedCreditCard_WalletCardType kDefaultCardType =
...@@ -368,6 +369,7 @@ sync_pb::SyncEntity CreateSyncWalletCard(const std::string& name, ...@@ -368,6 +369,7 @@ sync_pb::SyncEntity CreateSyncWalletCard(const std::string& name,
credit_card->set_name_on_card(kDefaultCardName); credit_card->set_name_on_card(kDefaultCardName);
credit_card->set_status(sync_pb::WalletMaskedCreditCard::VALID); credit_card->set_status(sync_pb::WalletMaskedCreditCard::VALID);
credit_card->set_type(kDefaultCardType); credit_card->set_type(kDefaultCardType);
credit_card->set_instrument_id(kDefaultInstrumentId);
if (!billing_address_id.empty()) { if (!billing_address_id.empty()) {
credit_card->set_billing_address_id(billing_address_id); credit_card->set_billing_address_id(billing_address_id);
} }
......
...@@ -487,6 +487,7 @@ CreditCard GetMaskedServerCard() { ...@@ -487,6 +487,7 @@ CreditCard GetMaskedServerCard() {
"2109" /* Mastercard */, NextMonth().c_str(), "2109" /* Mastercard */, NextMonth().c_str(),
NextYear().c_str(), "1"); NextYear().c_str(), "1");
credit_card.SetNetworkForMaskedCard(kMasterCard); credit_card.SetNetworkForMaskedCard(kMasterCard);
credit_card.set_instrument_id(1);
return credit_card; return credit_card;
} }
...@@ -707,6 +708,7 @@ void SetServerCreditCards(AutofillTable* table, ...@@ -707,6 +708,7 @@ void SetServerCreditCards(AutofillTable* table,
card.set_record_type(CreditCard::MASKED_SERVER_CARD); card.set_record_type(CreditCard::MASKED_SERVER_CARD);
card.SetNumber(card.LastFourDigits()); card.SetNumber(card.LastFourDigits());
card.SetNetworkForMaskedCard(card.network()); card.SetNetworkForMaskedCard(card.network());
card.set_instrument_id(card.instrument_id());
} }
table->SetServerCreditCards(as_masked_cards); table->SetServerCreditCards(as_masked_cards);
......
...@@ -103,6 +103,7 @@ CreditCard CardFromSpecifics(const sync_pb::WalletMaskedCreditCard& card) { ...@@ -103,6 +103,7 @@ CreditCard CardFromSpecifics(const sync_pb::WalletMaskedCreditCard& card) {
static_cast<CreditCard::Issuer>(card.card_issuer().issuer())); static_cast<CreditCard::Issuer>(card.card_issuer().issuer()));
if (!card.nickname().empty()) if (!card.nickname().empty())
result.SetNickname(base::UTF8ToUTF16(card.nickname())); result.SetNickname(base::UTF8ToUTF16(card.nickname()));
result.set_instrument_id(card.instrument_id());
return result; return result;
} }
...@@ -247,6 +248,7 @@ void SetAutofillWalletSpecificsFromServerCard( ...@@ -247,6 +248,7 @@ void SetAutofillWalletSpecificsFromServerCard(
wallet_card->set_nickname(base::UTF16ToUTF8(card.nickname())); wallet_card->set_nickname(base::UTF16ToUTF8(card.nickname()));
wallet_card->mutable_card_issuer()->set_issuer( wallet_card->mutable_card_issuer()->set_issuer(
static_cast<sync_pb::CardIssuer::Issuer>(card.card_issuer())); static_cast<sync_pb::CardIssuer::Issuer>(card.card_issuer()));
wallet_card->set_instrument_id(card.instrument_id());
} }
void SetAutofillWalletSpecificsFromPaymentsCustomerData( void SetAutofillWalletSpecificsFromPaymentsCustomerData(
......
...@@ -1432,7 +1432,8 @@ bool AutofillTable::GetServerCreditCards( ...@@ -1432,7 +1432,8 @@ bool AutofillTable::GetServerCreditCards(
"metadata.billing_address_id," // 10 "metadata.billing_address_id," // 10
"bank_name," // 11 "bank_name," // 11
"nickname," // 12 "nickname," // 12
"card_issuer " // 13 "card_issuer," // 13
"instrument_id " // 14
"FROM masked_credit_cards masked " "FROM masked_credit_cards masked "
"LEFT OUTER JOIN unmasked_credit_cards USING (id) " "LEFT OUTER JOIN unmasked_credit_cards USING (id) "
"LEFT OUTER JOIN server_card_metadata metadata USING (id)")); "LEFT OUTER JOIN server_card_metadata metadata USING (id)"));
...@@ -1478,6 +1479,7 @@ bool AutofillTable::GetServerCreditCards( ...@@ -1478,6 +1479,7 @@ bool AutofillTable::GetServerCreditCards(
card->SetNickname(s.ColumnString16(index++)); card->SetNickname(s.ColumnString16(index++));
card->set_card_issuer( card->set_card_issuer(
static_cast<CreditCard::Issuer>(s.ColumnInt(index++))); static_cast<CreditCard::Issuer>(s.ColumnInt(index++)));
card->set_instrument_id(s.ColumnInt64(index++));
credit_cards->push_back(std::move(card)); credit_cards->push_back(std::move(card));
} }
return s.Succeeded(); return s.Succeeded();
...@@ -1728,17 +1730,18 @@ void AutofillTable::SetServerCardsData( ...@@ -1728,17 +1730,18 @@ void AutofillTable::SetServerCardsData(
// Add all the masked cards. // Add all the masked cards.
sql::Statement masked_insert( sql::Statement masked_insert(
db_->GetUniqueStatement("INSERT INTO masked_credit_cards(" db_->GetUniqueStatement("INSERT INTO masked_credit_cards("
"id," // 0 "id," // 0
"network," // 1 "network," // 1
"status," // 2 "status," // 2
"name_on_card," // 3 "name_on_card," // 3
"last_four," // 4 "last_four," // 4
"exp_month," // 5 "exp_month," // 5
"exp_year," // 6 "exp_year," // 6
"bank_name," // 7 "bank_name," // 7
"nickname," // 8 "nickname," // 8
"card_issuer)" // 9 "card_issuer," // 9
"VALUES (?,?,?,?,?,?,?,?,?,?)")); "instrument_id)" // 10
"VALUES (?,?,?,?,?,?,?,?,?,?,?)"));
int index; int index;
for (const CreditCard& card : credit_cards) { for (const CreditCard& card : credit_cards) {
DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type()); DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type());
...@@ -1755,6 +1758,7 @@ void AutofillTable::SetServerCardsData( ...@@ -1755,6 +1758,7 @@ void AutofillTable::SetServerCardsData(
masked_insert.BindString(index++, card.bank_name()); masked_insert.BindString(index++, card.bank_name());
masked_insert.BindString16(index++, card.nickname()); masked_insert.BindString16(index++, card.nickname());
masked_insert.BindInt(index++, static_cast<int>(card.card_issuer())); masked_insert.BindInt(index++, static_cast<int>(card.card_issuer()));
masked_insert.BindInt(index++, card.instrument_id());
masked_insert.Run(); masked_insert.Run();
masked_insert.Reset(true); masked_insert.Reset(true);
} }
...@@ -3240,17 +3244,18 @@ void AutofillTable::AddMaskedCreditCards( ...@@ -3240,17 +3244,18 @@ void AutofillTable::AddMaskedCreditCards(
DCHECK_GT(db_->transaction_nesting(), 0); DCHECK_GT(db_->transaction_nesting(), 0);
sql::Statement masked_insert( sql::Statement masked_insert(
db_->GetUniqueStatement("INSERT INTO masked_credit_cards(" db_->GetUniqueStatement("INSERT INTO masked_credit_cards("
"id," // 0 "id," // 0
"network," // 1 "network," // 1
"status," // 2 "status," // 2
"name_on_card," // 3 "name_on_card," // 3
"last_four," // 4 "last_four," // 4
"exp_month," // 5 "exp_month," // 5
"exp_year," // 6 "exp_year," // 6
"bank_name," // 7 "bank_name," // 7
"nickname," // 8 "nickname," // 8
"card_issuer)" // 9 "card_issuer," // 9
"VALUES (?,?,?,?,?,?,?,?,?,?)")); "instrument_id)" // 10
"VALUES (?,?,?,?,?,?,?,?,?,?,?)"));
int index; int index;
for (const CreditCard& card : credit_cards) { for (const CreditCard& card : credit_cards) {
DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type()); DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type());
...@@ -3267,6 +3272,7 @@ void AutofillTable::AddMaskedCreditCards( ...@@ -3267,6 +3272,7 @@ void AutofillTable::AddMaskedCreditCards(
masked_insert.BindString(index++, card.bank_name()); masked_insert.BindString(index++, card.bank_name());
masked_insert.BindString16(index++, card.nickname()); masked_insert.BindString16(index++, card.nickname());
masked_insert.BindInt(index++, static_cast<int>(card.card_issuer())); masked_insert.BindInt(index++, static_cast<int>(card.card_issuer()));
masked_insert.BindInt(index++, card.instrument_id());
masked_insert.Run(); masked_insert.Run();
masked_insert.Reset(true); masked_insert.Reset(true);
......
...@@ -2447,6 +2447,7 @@ TEST_F(AutofillTableTest, SetGetServerCards) { ...@@ -2447,6 +2447,7 @@ TEST_F(AutofillTableTest, SetGetServerCards) {
inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1"));
inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020"));
inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111")); inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
inputs[0].set_instrument_id(321);
inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "b456")); inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "b456"));
inputs[1].SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("Rick Roman")); inputs[1].SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("Rick Roman"));
...@@ -2458,6 +2459,7 @@ TEST_F(AutofillTableTest, SetGetServerCards) { ...@@ -2458,6 +2459,7 @@ TEST_F(AutofillTableTest, SetGetServerCards) {
base::string16 nickname = ASCIIToUTF16("Grocery card"); base::string16 nickname = ASCIIToUTF16("Grocery card");
inputs[1].SetNickname(nickname); inputs[1].SetNickname(nickname);
inputs[1].set_card_issuer(CreditCard::Issuer::GOOGLE); inputs[1].set_card_issuer(CreditCard::Issuer::GOOGLE);
inputs[1].set_instrument_id(123);
test::SetServerCreditCards(table_.get(), inputs); test::SetServerCreditCards(table_.get(), inputs);
...@@ -2488,6 +2490,9 @@ TEST_F(AutofillTableTest, SetGetServerCards) { ...@@ -2488,6 +2490,9 @@ TEST_F(AutofillTableTest, SetGetServerCards) {
EXPECT_EQ(CreditCard::Issuer::ISSUER_UNKNOWN, outputs[0]->card_issuer()); EXPECT_EQ(CreditCard::Issuer::ISSUER_UNKNOWN, outputs[0]->card_issuer());
EXPECT_EQ(CreditCard::Issuer::GOOGLE, outputs[1]->card_issuer()); EXPECT_EQ(CreditCard::Issuer::GOOGLE, outputs[1]->card_issuer());
EXPECT_EQ(321, outputs[0]->instrument_id());
EXPECT_EQ(123, outputs[1]->instrument_id());
} }
TEST_F(AutofillTableTest, SetGetRemoveServerCardMetadata) { TEST_F(AutofillTableTest, SetGetRemoveServerCardMetadata) {
...@@ -2697,6 +2702,7 @@ TEST_F(AutofillTableTest, SetServerCardsData) { ...@@ -2697,6 +2702,7 @@ TEST_F(AutofillTableTest, SetServerCardsData) {
inputs[0].SetNetworkForMaskedCard(kVisaCard); inputs[0].SetNetworkForMaskedCard(kVisaCard);
inputs[0].SetServerStatus(CreditCard::EXPIRED); inputs[0].SetServerStatus(CreditCard::EXPIRED);
inputs[0].SetNickname(ASCIIToUTF16("Grocery card")); inputs[0].SetNickname(ASCIIToUTF16("Grocery card"));
inputs[0].set_instrument_id(1);
table_->SetServerCardsData(inputs); table_->SetServerCardsData(inputs);
// Make sure the card was added correctly. // Make sure the card was added correctly.
......
...@@ -882,6 +882,7 @@ TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_SetsAllWalletCardData) { ...@@ -882,6 +882,7 @@ TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_SetsAllWalletCardData) {
EXPECT_EQ(card.billing_address_id(), cards[0]->billing_address_id()); EXPECT_EQ(card.billing_address_id(), cards[0]->billing_address_id());
EXPECT_EQ(card.nickname(), cards[0]->nickname()); EXPECT_EQ(card.nickname(), cards[0]->nickname());
EXPECT_EQ(card.card_issuer(), cards[0]->card_issuer()); EXPECT_EQ(card.card_issuer(), cards[0]->card_issuer());
EXPECT_EQ(card.instrument_id(), cards[0]->instrument_id());
// Also make sure that those types are not empty, to exercice all the code // Also make sure that those types are not empty, to exercice all the code
// paths. // paths.
...@@ -890,6 +891,7 @@ TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_SetsAllWalletCardData) { ...@@ -890,6 +891,7 @@ TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_SetsAllWalletCardData) {
EXPECT_NE(0, card.expiration_month()); EXPECT_NE(0, card.expiration_month());
EXPECT_NE(0, card.expiration_year()); EXPECT_NE(0, card.expiration_year());
EXPECT_FALSE(card.nickname().empty()); EXPECT_FALSE(card.nickname().empty());
EXPECT_NE(0, card.instrument_id());
} }
// Test that all field values for a cloud token data sent from the server are // Test that all field values for a cloud token data sent from the server are
......
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