| Index: chrome/browser/autofill/form_structure_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/autofill/form_structure_unittest.cc (revision 42702)
|
| +++ chrome/browser/autofill/form_structure_unittest.cc (working copy)
|
| @@ -384,4 +384,102 @@
|
| EXPECT_EQ(ADDRESS_HOME_ZIP, form_structure->field(5)->heuristic_type());
|
| }
|
|
|
| +// Tests a sequence of FormFields where only labels are supplied to heuristics
|
| +// for matching. This works because FormField labels are matched in the case
|
| +// that input element ids (or |name| fields) are missing.
|
| +TEST(FormStructureTest, HeuristicsLabelsOnly) {
|
| + scoped_ptr<FormStructure> form_structure;
|
| + webkit_glue::FormFieldValues values;
|
| +
|
| + values.method = ASCIIToUTF16("post");
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("First Name"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Last Name"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("EMail"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Phone"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Fax"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Address"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Address"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Zip code"),
|
| + string16(),
|
| + string16(),
|
| + ASCIIToUTF16("text"),
|
| + WebInputElement::Text));
|
| + values.elements.push_back(webkit_glue::FormField(string16(),
|
| + ASCIIToUTF16("Submit"),
|
| + string16(),
|
| + ASCIIToUTF16("submit"),
|
| + WebInputElement::Submit));
|
| + form_structure.reset(new FormStructure(values));
|
| + EXPECT_TRUE(form_structure->IsAutoFillable());
|
| +
|
| + // Expect the correct number of fields.
|
| + ASSERT_EQ(8UL, form_structure->field_count());
|
| +
|
| + // Check that heuristics are initialized as UNKNOWN_TYPE.
|
| + std::vector<AutoFillField*>::const_iterator iter;
|
| + size_t i;
|
| + for (iter = form_structure->begin(), i = 0;
|
| + iter != form_structure->end();
|
| + ++iter, ++i) {
|
| + // Expect last element to be NULL.
|
| + if (i == form_structure->field_count()) {
|
| + ASSERT_EQ(static_cast<AutoFillField*>(NULL), *iter);
|
| + } else {
|
| + ASSERT_NE(static_cast<AutoFillField*>(NULL), *iter);
|
| + EXPECT_EQ(UNKNOWN_TYPE, (*iter)->heuristic_type());
|
| + }
|
| + }
|
| +
|
| + // Compute heuristic types.
|
| + form_structure->GetHeuristicAutoFillTypes();
|
| + ASSERT_EQ(8U, form_structure->field_count());
|
| +
|
| + // Check that heuristics are no longer UNKNOWN_TYPE.
|
| + // First name.
|
| + EXPECT_EQ(NAME_FIRST, form_structure->field(0)->heuristic_type());
|
| + // Last name.
|
| + EXPECT_EQ(NAME_LAST, form_structure->field(1)->heuristic_type());
|
| + // Email.
|
| + EXPECT_EQ(EMAIL_ADDRESS, form_structure->field(2)->heuristic_type());
|
| + // Phone.
|
| + EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER,
|
| + form_structure->field(3)->heuristic_type());
|
| + // Fax. Note, we don't currently match fax.
|
| + EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(4)->heuristic_type());
|
| + // Address.
|
| + EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(5)->heuristic_type());
|
| + // Address Line 2.
|
| + EXPECT_EQ(ADDRESS_HOME_LINE2, form_structure->field(6)->heuristic_type());
|
| + // Zip.
|
| + EXPECT_EQ(ADDRESS_HOME_ZIP, form_structure->field(7)->heuristic_type());
|
| +}
|
| +
|
| } // namespace
|
|
|