summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill/form_structure_unittest.cc
diff options
context:
space:
mode:
authordhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 02:29:39 +0000
committerdhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 02:29:39 +0000
commite731a7edd7a30d2934de85876604093d9a738e6e (patch)
treeb216aa0f524f94addd9b3fbffcb55b13b49d3e99 /chrome/browser/autofill/form_structure_unittest.cc
parentb411da300f6a750553c2d4e30150a83a2be4895a (diff)
downloadchromium_src-e731a7edd7a30d2934de85876604093d9a738e6e.zip
chromium_src-e731a7edd7a30d2934de85876604093d9a738e6e.tar.gz
chromium_src-e731a7edd7a30d2934de85876604093d9a738e6e.tar.bz2
Autofill infobar doesn't come up when security code is filled
Adds back in the notion of credit card cvc for heuristics purposes. The additional logic filters out cvc numbers from the forms. They were getting interpreted, in some cases, as card numbers. BUG=64131 TEST=FormStructureTest.CVCCodeClash Review URL: http://codereview.chromium.org/5268004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67204 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill/form_structure_unittest.cc')
-rw-r--r--chrome/browser/autofill/form_structure_unittest.cc56
1 files changed, 56 insertions, 0 deletions
diff --git a/chrome/browser/autofill/form_structure_unittest.cc b/chrome/browser/autofill/form_structure_unittest.cc
index 8eb03fd..4097a69 100644
--- a/chrome/browser/autofill/form_structure_unittest.cc
+++ b/chrome/browser/autofill/form_structure_unittest.cc
@@ -1287,6 +1287,62 @@ TEST(FormStructureTest, HeuristicsInfernoCC) {
form_structure->field(4)->heuristic_type());
}
+TEST(FormStructureTest, CVCCodeClash) {
+ scoped_ptr<FormStructure> form_structure;
+ FormData form;
+ form.method = ASCIIToUTF16("post");
+ form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("Card number"),
+ ASCIIToUTF16("ccnumber"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0));
+ form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("First name"),
+ ASCIIToUTF16("first_name"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0));
+ form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("Last name"),
+ ASCIIToUTF16("last_name"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0));
+ form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("Expiration date"),
+ ASCIIToUTF16("ccexpiresmonth"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0));
+ form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16(""),
+ ASCIIToUTF16("ccexpiresyear"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0));
+ form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("cvc number"),
+ ASCIIToUTF16("csc"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0));
+ form_structure.reset(new FormStructure(form));
+ EXPECT_TRUE(form_structure->IsAutoFillable(true));
+
+ // Expect the correct number of fields.
+ ASSERT_EQ(6U, form_structure->field_count());
+ ASSERT_EQ(4U, form_structure->autofill_count());
+
+ // Card Number.
+ EXPECT_EQ(CREDIT_CARD_NUMBER, form_structure->field(0)->heuristic_type());
+ // First name, taken as name on card.
+ EXPECT_EQ(CREDIT_CARD_NAME, form_structure->field(1)->heuristic_type());
+ // Last name is not merged.
+ EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(2)->heuristic_type());
+ // Expiration Date.
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, form_structure->field(3)->heuristic_type());
+ // Expiration Year.
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ form_structure->field(4)->heuristic_type());
+ // CVC code should not match.
+ EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(5)->heuristic_type());
+}
+
TEST(FormStructureTest, EncodeQueryRequest) {
FormData form;
form.method = ASCIIToUTF16("post");