Index: components/autofill/core/browser/credit_card.cc |
diff --git a/components/autofill/core/browser/credit_card.cc b/components/autofill/core/browser/credit_card.cc |
index 9906f27ab6b34a4fc7a3c70827cf0361e0b2c2b2..5907cfdfef7c4ef08f2820110441e861d49d2f5d 100644 |
--- a/components/autofill/core/browser/credit_card.cc |
+++ b/components/autofill/core/browser/credit_card.cc |
@@ -151,6 +151,8 @@ base::string16 CreditCard::TypeForDisplay(const std::string& type) { |
return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_JCB); |
if (type == kMasterCard) |
return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_MASTERCARD); |
+ if (type == kUnionPay) |
+ return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_UNION_PAY); |
if (type == kVisaCard) |
return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_VISA); |
@@ -172,6 +174,8 @@ int CreditCard::IconResourceId(const std::string& type) { |
return IDR_AUTOFILL_CC_JCB; |
if (type == kMasterCard) |
return IDR_AUTOFILL_CC_MASTERCARD; |
+ if (type == kUnionPay) |
+ return IDR_AUTOFILL_CC_GENERIC; // Needs resource: http://crbug.com/259211 |
if (type == kVisaCard) |
return IDR_AUTOFILL_CC_VISA; |
@@ -185,8 +189,12 @@ int CreditCard::IconResourceId(const std::string& type) { |
std::string CreditCard::GetCreditCardType(const base::string16& number) { |
// Credit card number specifications taken from: |
// http://en.wikipedia.org/wiki/Credit_card_numbers, |
+ // http://en.wikipedia.org/wiki/List_of_Issuer_Identification_Numbers, |
// http://www.discovernetwork.com/merchants/images/Merchant_Marketing_PDF.pdf, |
- // http://www.regular-expressions.info/creditcard.html, and |
+ // http://www.regular-expressions.info/creditcard.html, |
+ // http://developer.ean.com/general_info/Valid_Credit_Card_Types, |
+ // http://www.bincodes.com/, |
+ // http://www.fraudpractice.com/FL-binCC.html, and |
// http://www.beachnet.com/~hstiles/cardtype.html |
// |
// The last site is currently unavailable, but a cached version remains at |
@@ -200,6 +208,7 @@ std::string CreditCard::GetCreditCardType(const base::string16& number) { |
// Discover Card 6011,644-649,65 16 |
// JCB 3528-3589 16 |
// MasterCard 51-55 16 |
+ // UnionPay 62 16-19 |
// Check for prefixes of length 1. |
if (number.empty()) |
@@ -227,6 +236,9 @@ std::string CreditCard::GetCreditCardType(const base::string16& number) { |
if (first_two_digits >= 51 && first_two_digits <= 55) |
return kMasterCard; |
+ if (first_two_digits == 62) |
+ return kUnionPay; |
+ |
if (first_two_digits == 65) |
return kDiscoverCard; |
@@ -692,6 +704,7 @@ const char* const kDiscoverCard = "discoverCC"; |
const char* const kGenericCard = "genericCC"; |
const char* const kJCBCard = "jcbCC"; |
const char* const kMasterCard = "masterCardCC"; |
+const char* const kUnionPay = "unionPayCC"; |
const char* const kVisaCard = "visaCC"; |
} // namespace autofill |