summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorbenquan@chromium.org <benquan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-18 11:38:46 +0000
committerbenquan@chromium.org <benquan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-18 11:38:46 +0000
commitaafb593c5f710a4878788f89f2a4080a3fbaf42a (patch)
treeb3499f7d3ef39f7ba600f0b077f15b41755710e8 /components
parent353e3cf4b4a3e57e759832120e3d285cd6ec3b01 (diff)
downloadchromium_src-aafb593c5f710a4878788f89f2a4080a3fbaf42a.zip
chromium_src-aafb593c5f710a4878788f89f2a4080a3fbaf42a.tar.gz
chromium_src-aafb593c5f710a4878788f89f2a4080a3fbaf42a.tar.bz2
Fix static intialization issue and resubmit (16165002): Do not allow user input un supported card number in wallet mode.
BUG=175900 Review URL: https://chromiumcodereview.appspot.com/15819008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206938 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components')
-rw-r--r--components/autofill/browser/credit_card.cc45
-rw-r--r--components/autofill/browser/credit_card.h5
-rw-r--r--components/autofill/browser/credit_card_unittest.cc17
3 files changed, 43 insertions, 24 deletions
diff --git a/components/autofill/browser/credit_card.cc b/components/autofill/browser/credit_card.cc
index 8a96fa9..93f9089 100644
--- a/components/autofill/browser/credit_card.cc
+++ b/components/autofill/browser/credit_card.cc
@@ -162,6 +162,29 @@ base::string16 CreditCard::TypeForDisplay(const std::string& type) {
}
// static
+int CreditCard::IconResourceId(const std::string& type) {
+ if (type == kAmericanExpressCard)
+ return IDR_AUTOFILL_CC_AMEX;
+ if (type == kDinersCard)
+ return IDR_AUTOFILL_CC_DINERS;
+ if (type == kDiscoverCard)
+ return IDR_AUTOFILL_CC_DISCOVER;
+ if (type == kJCBCard)
+ return IDR_AUTOFILL_CC_JCB;
+ if (type == kMasterCard)
+ return IDR_AUTOFILL_CC_MASTERCARD;
+ if (type == kSoloCard)
+ return IDR_AUTOFILL_CC_SOLO;
+ if (type == kVisaCard)
+ return IDR_AUTOFILL_CC_VISA;
+
+ // If you hit this DCHECK, the above list of cases needs to be updated to
+ // include a new card.
+ DCHECK_EQ(kGenericCard, type);
+ return IDR_AUTOFILL_CC_GENERIC;
+}
+
+// static
std::string CreditCard::GetCreditCardType(const base::string16& number) {
// Don't check for a specific type if this is not a credit card number.
if (!autofill::IsValidCreditCardNumber(number))
@@ -455,28 +478,6 @@ base::string16 CreditCard::TypeAndLastFourDigits() const {
return type + ASCIIToUTF16(" - ") + digits;
}
-int CreditCard::IconResourceId() const {
- if (type_ == kAmericanExpressCard)
- return IDR_AUTOFILL_CC_AMEX;
- if (type_ == kDinersCard)
- return IDR_AUTOFILL_CC_DINERS;
- if (type_ == kDiscoverCard)
- return IDR_AUTOFILL_CC_DISCOVER;
- if (type_ == kJCBCard)
- return IDR_AUTOFILL_CC_JCB;
- if (type_ == kMasterCard)
- return IDR_AUTOFILL_CC_MASTERCARD;
- if (type_ == kSoloCard)
- return IDR_AUTOFILL_CC_SOLO;
- if (type_ == kVisaCard)
- return IDR_AUTOFILL_CC_VISA;
-
- // If you hit this DCHECK, the above list of cases needs to be updated to
- // include a new card.
- DCHECK_EQ(kGenericCard, type_);
- return IDR_AUTOFILL_CC_GENERIC;
-}
-
void CreditCard::operator=(const CreditCard& credit_card) {
if (this == &credit_card)
return;
diff --git a/components/autofill/browser/credit_card.h b/components/autofill/browser/credit_card.h
index 315d560..412f317 100644
--- a/components/autofill/browser/credit_card.h
+++ b/components/autofill/browser/credit_card.h
@@ -34,6 +34,9 @@ class CreditCard : public AutofillDataModel {
// The user-visible type of the card, e.g. 'Mastercard'.
static base::string16 TypeForDisplay(const std::string& type);
+ // The ResourceBundle ID for the appropriate credit card image.
+ static int IconResourceId(const std::string& type);
+
// The internal representation of credit card type.
static std::string GetCreditCardType(const base::string16& number);
@@ -70,8 +73,6 @@ class CreditCard : public AutofillDataModel {
base::string16 TypeForDisplay() const;
// A label for this credit card formatted as 'Cardname - 2345'.
base::string16 TypeAndLastFourDigits() const;
- // The ResourceBundle ID for the appropriate credit card image.
- int IconResourceId() const;
const std::string& type() const { return type_; }
diff --git a/components/autofill/browser/credit_card_unittest.cc b/components/autofill/browser/credit_card_unittest.cc
index b67ff3c..de8cb83 100644
--- a/components/autofill/browser/credit_card_unittest.cc
+++ b/components/autofill/browser/credit_card_unittest.cc
@@ -8,6 +8,7 @@
#include "components/autofill/browser/autofill_common_test.h"
#include "components/autofill/browser/credit_card.h"
#include "components/autofill/common/form_field_data.h"
+#include "grit/webkit_resources.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace autofill {
@@ -155,6 +156,22 @@ TEST(CreditCardTest, Compare) {
EXPECT_LT(0, b.Compare(a));
}
+// Test we get the correct icon for each card type.
+TEST(CreditCardTest, IconResourceId) {
+ EXPECT_EQ(IDR_AUTOFILL_CC_AMEX,
+ CreditCard::IconResourceId(kAmericanExpressCard));
+ EXPECT_EQ(IDR_AUTOFILL_CC_DINERS,
+ CreditCard::IconResourceId(kDinersCard));
+ EXPECT_EQ(IDR_AUTOFILL_CC_DISCOVER,
+ CreditCard::IconResourceId(kDiscoverCard));
+ EXPECT_EQ(IDR_AUTOFILL_CC_JCB,
+ CreditCard::IconResourceId(kJCBCard));
+ EXPECT_EQ(IDR_AUTOFILL_CC_MASTERCARD,
+ CreditCard::IconResourceId(kMasterCard));
+ EXPECT_EQ(IDR_AUTOFILL_CC_VISA,
+ CreditCard::IconResourceId(kVisaCard));
+}
+
TEST(CreditCardTest, UpdateFromImportedCard) {
CreditCard original_card(base::GenerateGUID(), "https://www.example.com");
test::SetCreditCardInfo(