| Index: components/autofill/browser/credit_card_unittest.cc
|
| diff --git a/components/autofill/browser/credit_card_unittest.cc b/components/autofill/browser/credit_card_unittest.cc
|
| index 6d78f336a6a3c65574285b3f39bfc69fb1957769..b67ff3cbac84f1be499b5930bf0086966e0a5ee8 100644
|
| --- a/components/autofill/browser/credit_card_unittest.cc
|
| +++ b/components/autofill/browser/credit_card_unittest.cc
|
| @@ -155,6 +155,79 @@ TEST(CreditCardTest, Compare) {
|
| EXPECT_LT(0, b.Compare(a));
|
| }
|
|
|
| +TEST(CreditCardTest, UpdateFromImportedCard) {
|
| + CreditCard original_card(base::GenerateGUID(), "https://www.example.com");
|
| + test::SetCreditCardInfo(
|
| + &original_card, "John Dillinger", "123456789012", "09", "2017");
|
| +
|
| + CreditCard a = original_card;
|
| +
|
| + // The new card has a different name, expiration date, and origin.
|
| + CreditCard b = a;
|
| + b.set_guid(base::GenerateGUID());
|
| + b.set_origin("https://www.example.org");
|
| + b.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("J. Dillinger"));
|
| + b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08"));
|
| + b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019"));
|
| +
|
| + EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US"));
|
| + EXPECT_EQ("https://www.example.org", a.origin());
|
| + EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME));
|
| + EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH));
|
| + EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
|
| +
|
| + // Try again, but with no name set for |b|.
|
| + a = original_card;
|
| + b.SetRawInfo(CREDIT_CARD_NAME, base::string16());
|
| +
|
| + EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US"));
|
| + EXPECT_EQ("https://www.example.org", a.origin());
|
| + EXPECT_EQ(ASCIIToUTF16("John Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME));
|
| + EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH));
|
| + EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
|
| +
|
| + // Try again, but with only the original card having a verified origin.
|
| + // |a| should be unchanged.
|
| + a = original_card;
|
| + a.set_origin("Chrome settings");
|
| + b.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("J. Dillinger"));
|
| +
|
| + EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US"));
|
| + EXPECT_EQ("Chrome settings", a.origin());
|
| + EXPECT_EQ(ASCIIToUTF16("John Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME));
|
| + EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH));
|
| + EXPECT_EQ(ASCIIToUTF16("2017"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
|
| +
|
| + // Try again, but with only the new card having a verified origin.
|
| + a = original_card;
|
| + b.set_origin("Chrome settings");
|
| +
|
| + EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US"));
|
| + EXPECT_EQ("Chrome settings", a.origin());
|
| + EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME));
|
| + EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH));
|
| + EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
|
| +
|
| + // Try again, with both cards having a verified origin.
|
| + a = original_card;
|
| + a.set_origin("Chrome Autofill dialog");
|
| + b.set_origin("Chrome settings");
|
| +
|
| + EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US"));
|
| + EXPECT_EQ("Chrome settings", a.origin());
|
| + EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME));
|
| + EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH));
|
| + EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR));
|
| +
|
| + // Try again, but with |b| having a different card number.
|
| + // |a| should be unchanged.
|
| + a = original_card;
|
| + b.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
|
| +
|
| + EXPECT_FALSE(a.UpdateFromImportedCard(b, "en-US"));
|
| + EXPECT_EQ(original_card, a);
|
| +}
|
| +
|
| TEST(CreditCardTest, IsComplete) {
|
| CreditCard card(base::GenerateGUID(), "https://www.example.com/");
|
| EXPECT_FALSE(card.IsComplete());
|
|
|