Chromium Code Reviews| Index: components/autofill/core/browser/webdata/autofill_table.cc |
| diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc |
| index 5f2ff3a8e8e65c8102f504544ce0736bb811f099..bc7292f4e02b859c923ee7f0251cb67d56f48176 100644 |
| --- a/components/autofill/core/browser/webdata/autofill_table.cc |
| +++ b/components/autofill/core/browser/webdata/autofill_table.cc |
| @@ -459,6 +459,9 @@ bool AutofillTable::MigrateToVersion(int version, |
| case 66: |
| *update_compatible_version = false; |
| return MigrateToVersion66AddCardBillingAddress(); |
| + case 67: |
| + *update_compatible_version = false; |
| + return MigrateToVersion67AddMaskedCardBillingAddress(); |
| } |
| return true; |
| } |
| @@ -1205,7 +1208,8 @@ bool AutofillTable::GetServerCreditCards( |
| "status," // 6 |
| "name_on_card," // 7 |
| "exp_month," // 8 |
| - "exp_year " // 9 |
| + "exp_year," // 9 |
| + "billing_address_id " // 10 |
| "FROM masked_credit_cards masked " |
| "LEFT OUTER JOIN unmasked_credit_cards USING (id) " |
| "LEFT OUTER JOIN server_card_metadata metadata USING (id)")); |
| @@ -1245,6 +1249,7 @@ bool AutofillTable::GetServerCreditCards( |
| card->SetRawInfo(CREDIT_CARD_NAME_FULL, s.ColumnString16(index++)); |
| card->SetRawInfo(CREDIT_CARD_EXP_MONTH, s.ColumnString16(index++)); |
| card->SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, s.ColumnString16(index++)); |
| + card->set_billing_address_id(s.ColumnString(index++)); |
| credit_cards->push_back(card); |
| } |
| @@ -1269,9 +1274,10 @@ void AutofillTable::SetServerCreditCards( |
| "status," // 2 |
| "name_on_card," // 3 |
| "last_four," // 4 |
| - "exp_month," // 4 |
| - "exp_year) " // 5 |
| - "VALUES (?,?,?,?,?,?,?)")); |
| + "exp_month," // 5 |
| + "exp_year," // 6 |
| + "billing_address_id) " // 7 |
| + "VALUES (?,?,?,?,?,?,?,?)")); |
| for (const CreditCard& card : credit_cards) { |
| DCHECK_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type()); |
| @@ -1284,6 +1290,7 @@ void AutofillTable::SetServerCreditCards( |
| masked_insert.BindString16(5, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
| masked_insert.BindString16(6, |
| card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| + masked_insert.BindString(7, card.billing_address_id()); |
| masked_insert.Run(); |
| masked_insert.Reset(true); |
| @@ -1394,6 +1401,27 @@ bool AutofillTable::UpdateServerAddressUsageStats( |
| return db_->GetLastChangeCount() > 0; |
| } |
| +bool AutofillTable::UpdateServerCardBillingAddress( |
| + const CreditCard& credit_card) { |
| + DCHECK_NE(CreditCard::LOCAL_CARD, credit_card.record_type()); |
| + sql::Transaction transaction(db_); |
| + if (!transaction.Begin()) |
| + return false; |
|
Scott Hess - ex-Googler
2016/06/29 20:04:07
Don't need a transaction for a single-statement fu
please use gerrit instead
2016/06/30 01:19:27
Removed the transaction.
|
| + |
| + sql::Statement update(db_->GetUniqueStatement( |
| + "UPDATE masked_credit_cards SET billing_address_id = ? " |
| + "WHERE id = ?")); |
| + update.BindString(0, credit_card.billing_address_id()); |
| + update.BindString(1, credit_card.server_id()); |
| + if (!update.Run()) |
| + return false; |
| + |
| + if (!transaction.Commit()) |
| + return false; |
| + |
| + return db_->GetLastChangeCount() > 0; |
| +} |
| + |
| bool AutofillTable::ClearAllServerData() { |
| sql::Transaction transaction(db_); |
| if (!transaction.Begin()) |
| @@ -1778,7 +1806,8 @@ bool AutofillTable::InitMaskedCreditCardsTable() { |
| "type VARCHAR," |
| "last_four VARCHAR," |
| "exp_month INTEGER DEFAULT 0," |
| - "exp_year INTEGER DEFAULT 0)")) { |
| + "exp_year INTEGER DEFAULT 0, " |
| + "billing_address_id VARCHAR)")) { |
| NOTREACHED(); |
| return false; |
| } |
| @@ -2281,4 +2310,11 @@ bool AutofillTable::MigrateToVersion66AddCardBillingAddress() { |
| "ALTER TABLE credit_cards ADD COLUMN billing_address_id VARCHAR"); |
| } |
| +bool AutofillTable::MigrateToVersion67AddMaskedCardBillingAddress() { |
| + // The default value for this column is null, but Connection::ColumnString() |
| + // returns an empty string for that. |
| + return db_->Execute( |
| + "ALTER TABLE masked_credit_cards ADD COLUMN billing_address_id VARCHAR"); |
| +} |
| + |
| } // namespace autofill |