summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-06 23:45:25 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-06 23:45:25 +0000
commit7517ca1ca0fed3ef5bbf8d179edd3632d0257def (patch)
treeb82ed093da654d4562b7a1b5dc72f9a25c88531d
parent7150962f2e8616b26b5d2861fa360d2150f1e81a (diff)
downloadchromium_src-7517ca1ca0fed3ef5bbf8d179edd3632d0257def.zip
chromium_src-7517ca1ca0fed3ef5bbf8d179edd3632d0257def.tar.gz
chromium_src-7517ca1ca0fed3ef5bbf8d179edd3632d0257def.tar.bz2
Autofill: Fix GetCreditCardType to return 'generic' if the number does not pass
the Luhn test. BUG=70064 TEST=none Review URL: http://codereview.chromium.org/6625004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77096 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/autofill/autofill_manager_unittest.cc6
-rw-r--r--chrome/browser/autofill/credit_card.cc4
-rw-r--r--chrome/browser/autofill/credit_card_unittest.cc22
3 files changed, 22 insertions, 10 deletions
diff --git a/chrome/browser/autofill/autofill_manager_unittest.cc b/chrome/browser/autofill/autofill_manager_unittest.cc
index 9a97b76..c374170 100644
--- a/chrome/browser/autofill/autofill_manager_unittest.cc
+++ b/chrome/browser/autofill/autofill_manager_unittest.cc
@@ -823,7 +823,7 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestionsEmptyValue) {
string16 expected_labels[] = {ASCIIToUTF16("*3456"), ASCIIToUTF16("*8765")};
string16 expected_icons[] = {
ASCIIToUTF16("visaCC"),
- ASCIIToUTF16("masterCardCC")
+ ASCIIToUTF16("genericCC")
};
int expected_unique_ids[] = {
autofill_manager_->GetPackedCreditCardID(4),
@@ -902,7 +902,7 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestionsNonCCNumber) {
string16 expected_labels[] = {ASCIIToUTF16("*3456"), ASCIIToUTF16("*8765")};
string16 expected_icons[] = {
ASCIIToUTF16("visaCC"),
- ASCIIToUTF16("masterCardCC")
+ ASCIIToUTF16("genericCC")
};
int expected_unique_ids[] = {
autofill_manager_->GetPackedCreditCardID(4),
@@ -1038,7 +1038,7 @@ TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestions) {
string16 expected_labels2[] = {ASCIIToUTF16("*3456"), ASCIIToUTF16("*8765")};
string16 expected_icons2[] = {
ASCIIToUTF16("visaCC"),
- ASCIIToUTF16("masterCardCC")
+ ASCIIToUTF16("genericCC")
};
int expected_unique_ids2[] = {
autofill_manager_->GetPackedCreditCardID(4),
diff --git a/chrome/browser/autofill/credit_card.cc b/chrome/browser/autofill/credit_card.cc
index 3daf323..93e6e4e 100644
--- a/chrome/browser/autofill/credit_card.cc
+++ b/chrome/browser/autofill/credit_card.cc
@@ -35,6 +35,10 @@ const AutofillFieldType kAutoFillCreditCardTypes[] = {
const int kAutoFillCreditCardLength = arraysize(kAutoFillCreditCardTypes);
std::string GetCreditCardType(const string16& number) {
+ // Don't check for a specific type if this is not a credit card number.
+ if (!CreditCard::IsCreditCardNumber(number))
+ return kGenericCard;
+
// Credit card number specifications taken from:
// http://en.wikipedia.org/wiki/Credit_card_numbers and
// http://www.beachnet.com/~hstiles/cardtype.html
diff --git a/chrome/browser/autofill/credit_card_unittest.cc b/chrome/browser/autofill/credit_card_unittest.cc
index 2cd9b85..009a4f7 100644
--- a/chrome/browser/autofill/credit_card_unittest.cc
+++ b/chrome/browser/autofill/credit_card_unittest.cc
@@ -44,30 +44,30 @@ TEST(CreditCardTest, PreviewSummaryAndObfuscatedNumberStrings) {
autofill_test::SetCreditCardInfo(&credit_card2,
"John Dillinger", "123456789012", "", "2010");
string16 summary2 = credit_card2.PreviewSummary();
- EXPECT_EQ(string16(ASCIIToUTF16("************9012")), summary2);
+ EXPECT_EQ(ASCIIToUTF16("************9012"), summary2);
string16 obfuscated2 = credit_card2.ObfuscatedNumber();
- EXPECT_EQ(string16(ASCIIToUTF16("************9012")), obfuscated2);
+ EXPECT_EQ(ASCIIToUTF16("************9012"), obfuscated2);
// Case 3: No year.
CreditCard credit_card3;
autofill_test::SetCreditCardInfo(&credit_card3,
"John Dillinger", "123456789012", "01", "");
string16 summary3 = credit_card3.PreviewSummary();
- EXPECT_EQ(string16(ASCIIToUTF16("************9012")), summary3);
+ EXPECT_EQ(ASCIIToUTF16("************9012"), summary3);
string16 obfuscated3 = credit_card3.ObfuscatedNumber();
- EXPECT_EQ(string16(ASCIIToUTF16("************9012")), obfuscated3);
+ EXPECT_EQ(ASCIIToUTF16("************9012"), obfuscated3);
// Case 4: Have everything.
CreditCard credit_card4;
autofill_test::SetCreditCardInfo(&credit_card4,
"John Dillinger", "123456789012", "01", "2010");
string16 summary4 = credit_card4.PreviewSummary();
- EXPECT_EQ(string16(ASCIIToUTF16("************9012, Exp: 01/2010")), summary4);
+ EXPECT_EQ(ASCIIToUTF16("************9012, Exp: 01/2010"), summary4);
string16 obfuscated4 = credit_card4.ObfuscatedNumber();
- EXPECT_EQ(string16(ASCIIToUTF16("************9012")), obfuscated4);
+ EXPECT_EQ(ASCIIToUTF16("************9012"), obfuscated4);
}
-TEST(CreditCardTest, AssignmentOperator){
+TEST(CreditCardTest, AssignmentOperator) {
CreditCard a, b;
// Result of assignment should be logically equal to the original profile.
@@ -81,5 +81,13 @@ TEST(CreditCardTest, AssignmentOperator){
EXPECT_TRUE(a == b);
}
+TEST(CreditCardTest, InvalidMastercardNumber) {
+ CreditCard card;
+
+ autofill_test::SetCreditCardInfo(&card, "Baby Face Nelson",
+ "5200000000000004", "01", "2010");
+ EXPECT_EQ(ASCIIToUTF16("genericCC"), card.type());
+}
+
} // namespace