Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Unified Diff: components/autofill/core/browser/credit_card_field_unittest.cc

Issue 1753253003: [Autofill] Fix heuristics to detect consecutive CVCs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added scanner check Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/autofill/core/browser/credit_card_field.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/autofill/core/browser/credit_card_field_unittest.cc
diff --git a/components/autofill/core/browser/credit_card_field_unittest.cc b/components/autofill/core/browser/credit_card_field_unittest.cc
index 263505ffe234ab1c675f7e829101338946ea69a1..8b4b8380e285a7d2bda2d70986df4ebee6a47847 100644
--- a/components/autofill/core/browser/credit_card_field_unittest.cc
+++ b/components/autofill/core/browser/credit_card_field_unittest.cc
@@ -34,6 +34,21 @@ class CreditCardFieldTest : public testing::Test {
field_ = make_scoped_ptr(static_cast<CreditCardField*>(field.release()));
}
+ void MultipleParses() {
+ scoped_ptr<FormField> field;
+
+ AutofillScanner scanner(list_.get());
+ while (!scanner.IsEnd()) {
+ field = CreditCardField::Parse(&scanner);
+ field_ = make_scoped_ptr(static_cast<CreditCardField*>(field.release()));
+ if (field_ == nullptr) {
+ scanner.Advance();
+ } else {
+ AddClassifications();
+ }
+ }
+ }
+
// Associates fields with their corresponding types, based on the previous
// call to Parse().
void AddClassifications() {
@@ -593,4 +608,170 @@ TEST_F(CreditCardFieldTest, ParseMultipleCreditCardNumbers) {
field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType());
}
+TEST_F(CreditCardFieldTest, ParseFirstAndLastNames) {
+ FormFieldData field;
+ field.form_control_type = "text";
+
+ field.label = ASCIIToUTF16("First Name on Card");
+ field.name = ASCIIToUTF16("cc-fname");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("name1")));
+
+ field.label = ASCIIToUTF16("Last Name");
+ field.name = ASCIIToUTF16("cc-lname");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("name2")));
+
+ field.label = ASCIIToUTF16("Card Number");
+ field.name = ASCIIToUTF16("card_number");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("number3")));
+
+ field.label = ASCIIToUTF16("Exp Month");
+ field.name = ASCIIToUTF16("ccmonth");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("month4")));
+
+ field.label = ASCIIToUTF16("Exp Year");
+ field.name = ASCIIToUTF16("ccyear");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("year5")));
+
+ Parse();
+ ASSERT_NE(nullptr, field_.get());
+ AddClassifications();
+
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME_FIRST,
+ field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name2")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME_LAST,
+ field_candidates_map_[ASCIIToUTF16("name2")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number3")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER,
+ field_candidates_map_[ASCIIToUTF16("number3")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month4")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
+ field_candidates_map_[ASCIIToUTF16("month4")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year5")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType());
+}
+
+TEST_F(CreditCardFieldTest, ParseConsecutiveCvc) {
+ FormFieldData field;
+ field.form_control_type = "text";
+
+ field.label = ASCIIToUTF16("Name on Card");
+ field.name = ASCIIToUTF16("name_on_card");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("name")));
+
+ field.label = ASCIIToUTF16("Card Number");
+ field.name = ASCIIToUTF16("card_number");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("number")));
+
+ field.label = ASCIIToUTF16("Exp Month");
+ field.name = ASCIIToUTF16("ccmonth");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("month")));
+
+ field.label = ASCIIToUTF16("Exp Year");
+ field.name = ASCIIToUTF16("ccyear");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("year")));
+
+ field.label = ASCIIToUTF16("Verification");
+ field.name = ASCIIToUTF16("verification");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc")));
+
+ field.label = ASCIIToUTF16("Verification");
+ field.name = ASCIIToUTF16("verification");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2")));
+
+ MultipleParses();
+
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME_FULL,
+ field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER,
+ field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
+ field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
+ field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
+ field_candidates_map_[ASCIIToUTF16("cvc2")].BestHeuristicType());
+}
+
+TEST_F(CreditCardFieldTest, ParseNonConsecutiveCvc) {
+ FormFieldData field;
+ field.form_control_type = "text";
+
+ field.label = ASCIIToUTF16("Name on Card");
+ field.name = ASCIIToUTF16("name_on_card");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("name")));
+
+ field.label = ASCIIToUTF16("Card Number");
+ field.name = ASCIIToUTF16("card_number");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("number")));
+
+ field.label = ASCIIToUTF16("Exp Month");
+ field.name = ASCIIToUTF16("ccmonth");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("month")));
+
+ field.label = ASCIIToUTF16("Exp Year");
+ field.name = ASCIIToUTF16("ccyear");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("year")));
+
+ field.label = ASCIIToUTF16("Verification");
+ field.name = ASCIIToUTF16("verification");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc")));
+
+ field.label = ASCIIToUTF16("Unknown");
+ field.name = ASCIIToUTF16("unknown");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("unknown")));
+
+ field.label = ASCIIToUTF16("Verification");
+ field.name = ASCIIToUTF16("verification");
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2")));
+
+ MultipleParses();
+
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME_FULL,
+ field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER,
+ field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
+ field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc")) !=
+ field_candidates_map_.end());
+ EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
+ field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("unknown")) ==
+ field_candidates_map_.end());
+ ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) ==
+ field_candidates_map_.end());
+}
+
} // namespace autofill
« no previous file with comments | « components/autofill/core/browser/credit_card_field.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698