Index: components/autofill/core/browser/credit_card_unittest.cc |
diff --git a/components/autofill/core/browser/credit_card_unittest.cc b/components/autofill/core/browser/credit_card_unittest.cc |
index 36288b10d393b4f67fbf7c3b5b455abd44397ac3..aaee3655bd2c07ab269a209a29e6772e1d3f6442 100644 |
--- a/components/autofill/core/browser/credit_card_unittest.cc |
+++ b/components/autofill/core/browser/credit_card_unittest.cc |
@@ -340,6 +340,7 @@ TEST(CreditCardTest, UpdateFromImportedCard) { |
b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08")); |
b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019")); |
+ // |a| should be updated with the information from |b|. |
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_FULL)); |
@@ -347,6 +348,8 @@ TEST(CreditCardTest, UpdateFromImportedCard) { |
EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
// Try again, but with no name set for |b|. |
+ // |a| should be updated with |b|'s expiration date and keep its original |
+ // name. |
a = original_card; |
b.SetRawInfo(CREDIT_CARD_NAME_FULL, base::string16()); |
@@ -370,7 +373,51 @@ TEST(CreditCardTest, UpdateFromImportedCard) { |
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 using an expired verified original card. |
+ // |a| should not be updated because the name on the cards are not identical. |
+ a = original_card; |
+ a.set_origin("Chrome settings"); |
+ a.SetExpirationYear(2010); |
+ |
+ EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
+ EXPECT_EQ("Chrome settings", a.origin()); |
+ EXPECT_EQ(ASCIIToUTF16("John Dillinger"), |
+ a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
+ EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
+ EXPECT_EQ(ASCIIToUTF16("2010"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
+ |
+ // Try again, but with using identical name on the cards. |
+ // |a|'s expiration date should be updated. |
+ a = original_card; |
+ a.set_origin("Chrome settings"); |
+ a.SetExpirationYear(2010); |
+ a.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
+ |
+ EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
+ EXPECT_EQ("Chrome settings", a.origin()); |
+ EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
+ 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| being expired. |
+ // |a|'s expiration date should not be updated. |
+ a = original_card; |
+ a.set_origin("Chrome settings"); |
+ a.SetExpirationYear(2010); |
+ a.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
+ b.SetExpirationYear(2009); |
+ |
+ EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
+ EXPECT_EQ("Chrome settings", a.origin()); |
+ EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
+ EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
+ EXPECT_EQ(ASCIIToUTF16("2010"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
+ |
+ // Put back |b|'s initial expiration date. |
+ b.SetExpirationYear(2019); |
+ |
// Try again, but with only the new card having a verified origin. |
+ // |a| should be updated. |
a = original_card; |
b.set_origin("Chrome settings"); |
@@ -381,6 +428,7 @@ TEST(CreditCardTest, UpdateFromImportedCard) { |
EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
// Try again, with both cards having a verified origin. |
+ // |a| should be updated. |
a = original_card; |
a.set_origin("Chrome Autofill dialog"); |
b.set_origin("Chrome settings"); |