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

Unified Diff: chrome/browser/autofill/form_structure_unittest.cc

Issue 11198048: [Autofill] Update the autocomplete types implementation to match the current HTML spec. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
Index: chrome/browser/autofill/form_structure_unittest.cc
diff --git a/chrome/browser/autofill/form_structure_unittest.cc b/chrome/browser/autofill/form_structure_unittest.cc
index 64c8e17c46d07a8480dd903258ae42d320bdc42f..66101bdb8aef745555e69c7b6ebaefc8944f8dae 100644
--- a/chrome/browser/autofill/form_structure_unittest.cc
+++ b/chrome/browser/autofill/form_structure_unittest.cc
@@ -329,8 +329,8 @@ TEST(FormStructureTest, HeuristicsContactInfo) {
EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(7)->heuristic_type());
}
-// Verify that we can correctly process the |autocompletetype| attribute.
-TEST(FormStructureTest, HeuristicsAutocompletetype) {
+// Verify that we can correctly process the |autocomplete| attribute.
+TEST(FormStructureTest, HeuristicsAutocompleteAttribute) {
scoped_ptr<FormStructure> form_structure;
FormData form;
form.method = ASCIIToUTF16("post");
@@ -340,17 +340,17 @@ TEST(FormStructureTest, HeuristicsAutocompletetype) {
field.label = string16();
field.name = ASCIIToUTF16("field1");
- field.autocomplete_type = ASCIIToUTF16("given-name");
+ field.autocomplete_attribute = ASCIIToUTF16("given-name");
form.fields.push_back(field);
field.label = string16();
field.name = ASCIIToUTF16("field2");
- field.autocomplete_type = ASCIIToUTF16("surname");
+ field.autocomplete_attribute = ASCIIToUTF16("family-name");
form.fields.push_back(field);
field.label = string16();
field.name = ASCIIToUTF16("field3");
- field.autocomplete_type = ASCIIToUTF16("email");
+ field.autocomplete_attribute = ASCIIToUTF16("email");
form.fields.push_back(field);
form_structure.reset(new FormStructure(form));
@@ -368,7 +368,7 @@ TEST(FormStructureTest, HeuristicsAutocompletetype) {
// Verify that we can correctly process the |autocompletetype| attribute for
// phone number types (especially phone prefixes and suffixes).
-TEST(FormStructureTest, HeuristicsAutocompletetypePhones) {
+TEST(FormStructureTest, HeuristicsAutocompleteAttributePhoneTypes) {
scoped_ptr<FormStructure> form_structure;
FormData form;
form.method = ASCIIToUTF16("post");
@@ -378,17 +378,17 @@ TEST(FormStructureTest, HeuristicsAutocompletetypePhones) {
field.label = string16();
field.name = ASCIIToUTF16("field1");
- field.autocomplete_type = ASCIIToUTF16("phone-local");
+ field.autocomplete_attribute = ASCIIToUTF16("tel-local");
form.fields.push_back(field);
field.label = string16();
field.name = ASCIIToUTF16("field2");
- field.autocomplete_type = ASCIIToUTF16("phone-local-prefix");
+ field.autocomplete_attribute = ASCIIToUTF16("tel-local-prefix");
form.fields.push_back(field);
field.label = string16();
field.name = ASCIIToUTF16("field3");
- field.autocomplete_type = ASCIIToUTF16("phone-local-suffix");
+ field.autocomplete_attribute = ASCIIToUTF16("tel-local-suffix");
form.fields.push_back(field);
form_structure.reset(new FormStructure(form));
@@ -411,7 +411,7 @@ TEST(FormStructureTest, HeuristicsAutocompletetypePhones) {
// If at least one field includes the |autocompletetype| attribute, we should
Dan Beam 2012/10/19 00:12:44 |autocompletetype| -> |autocomplete| probably, rig
Ilya Sherman 2012/10/19 04:19:32 Done.
// not try to apply any other heuristics.
-TEST(FormStructureTest, AutocompletetypeOverridesOtherHeuristics) {
+TEST(FormStructureTest, AutocompleteAttributeOverridesOtherHeuristics) {
scoped_ptr<FormStructure> form_structure;
FormData form;
form.method = ASCIIToUTF16("post");
@@ -445,7 +445,7 @@ TEST(FormStructureTest, AutocompletetypeOverridesOtherHeuristics) {
EXPECT_EQ(EMAIL_ADDRESS, form_structure->field(2)->heuristic_type());
// Now update the first form field to include an 'autocompletetype' attribute.
- form.fields.front().autocomplete_type = ASCIIToUTF16("x-other");
+ form.fields.front().autocomplete_attribute = ASCIIToUTF16("x-other");
form_structure.reset(new FormStructure(form));
form_structure->DetermineHeuristicTypes();
EXPECT_FALSE(form_structure->IsAutofillable(true));
@@ -461,7 +461,7 @@ TEST(FormStructureTest, AutocompletetypeOverridesOtherHeuristics) {
// Verify that we can correctly process sections listed in the |autocomplete|
// attribute.
-TEST(FormStructureTest, HeuristicsAutocompletetypeWithSections) {
+TEST(FormStructureTest, HeuristicsAutocompleteAttributeWithSections) {
scoped_ptr<FormStructure> form_structure;
FormData form;
form.method = ASCIIToUTF16("post");
@@ -469,96 +469,50 @@ TEST(FormStructureTest, HeuristicsAutocompletetypeWithSections) {
FormFieldData field;
field.form_control_type = ASCIIToUTF16("text");
- // We expect "shipping" and "billing" to be the most common sections.
+ // Some fields will have no section specified. These fall into the default
+ // section, with an empty name.
field.label = string16();
field.name = ASCIIToUTF16("field1");
- field.autocomplete_type = ASCIIToUTF16("section-shipping given-name");
+ field.autocomplete_attribute = ASCIIToUTF16("given-name");
form.fields.push_back(field);
- // Some field will have no section specified. These fall into the default
- // section, with an empty name.
+ // We allow arbitrary section names.
field.label = string16();
field.name = ASCIIToUTF16("field2");
- field.autocomplete_type = ASCIIToUTF16("surname");
+ field.autocomplete_attribute = ASCIIToUTF16("section-foo family-name");
form.fields.push_back(field);
- // We allow arbitrary section names.
+ // "shipping" and "billing" are special section tokens that don't require the
+ // "section-" prefix.
field.label = string16();
field.name = ASCIIToUTF16("field3");
- field.autocomplete_type = ASCIIToUTF16("section-foo address-line1");
+ field.autocomplete_attribute = ASCIIToUTF16("shipping address-line1");
form.fields.push_back(field);
- // Specifying "section-" is equivalent to not specifying a section.
+ // "shipping" and "billing" can be combined with other section names.
field.label = string16();
field.name = ASCIIToUTF16("field4");
- field.autocomplete_type = ASCIIToUTF16("section- address-line2");
+ field.autocomplete_attribute =
+ ASCIIToUTF16("section-foo billing address-line2");
form.fields.push_back(field);
- // We don't do anything clever to try to coalesce sections; it's up to site
- // authors to avoid typos.
+ // Specifying "section-" is equivalent to not specifying a section.
field.label = string16();
field.name = ASCIIToUTF16("field5");
- field.autocomplete_type = ASCIIToUTF16("section--shipping locality");
+ field.autocomplete_attribute = ASCIIToUTF16("section- locality");
form.fields.push_back(field);
- // Credit card fields are implicitly in a separate section from other fields.
+ // We don't do anything clever to try to coalesce sections; it's up to site
+ // authors to avoid typos.
field.label = string16();
field.name = ASCIIToUTF16("field6");
- field.autocomplete_type = ASCIIToUTF16("section-shipping cc-number");
- form.fields.push_back(field);
-
- form_structure.reset(new FormStructure(form));
- form_structure->DetermineHeuristicTypes();
- EXPECT_TRUE(form_structure->IsAutofillable(true));
-
- // Expect the correct number of fields.
- ASSERT_EQ(6U, form_structure->field_count());
- ASSERT_EQ(6U, form_structure->autofill_count());
-
- EXPECT_EQ(NAME_FIRST, form_structure->field(0)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("shipping-default"),
- form_structure->field(0)->section());
- EXPECT_EQ(NAME_LAST, form_structure->field(1)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("-default"), form_structure->field(1)->section());
- EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(2)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("foo-default"), form_structure->field(2)->section());
- EXPECT_EQ(ADDRESS_HOME_LINE2, form_structure->field(3)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("-default"), form_structure->field(3)->section());
- EXPECT_EQ(ADDRESS_HOME_CITY, form_structure->field(4)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("-shipping-default"),
- form_structure->field(4)->section());
- EXPECT_EQ(CREDIT_CARD_NUMBER, form_structure->field(5)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("shipping-cc"), form_structure->field(5)->section());
-}
-
-// Verify that we can correctly process fallback types listed in the
-// |autocompletetype| attribute.
-TEST(FormStructureTest, HeuristicsAutocompletetypeWithFallbacks) {
- scoped_ptr<FormStructure> form_structure;
- FormData form;
- form.method = ASCIIToUTF16("post");
-
- FormFieldData field;
- field.form_control_type = ASCIIToUTF16("text");
-
- // Skip over any sections and "x"-prefixed types.
- field.label = string16();
- field.name = ASCIIToUTF16("field1");
- field.autocomplete_type =
- ASCIIToUTF16("section-full-name x-given-name-initial given-name");
- form.fields.push_back(field);
-
- // Stop processing once we see a known type.
- field.label = string16();
- field.name = ASCIIToUTF16("field2");
- field.autocomplete_type = ASCIIToUTF16("section-full-name surname full-name");
+ field.autocomplete_attribute = ASCIIToUTF16("section--foo region");
form.fields.push_back(field);
- // Skip over unknown types even if they are not prefixed with "x-".
+ // Credit card fields are implicitly in a separate section from other fields.
field.label = string16();
- field.name = ASCIIToUTF16("field3");
- field.autocomplete_type =
- ASCIIToUTF16("section-shipping mobile-phone-full phone-full");
+ field.name = ASCIIToUTF16("field7");
+ field.autocomplete_attribute = ASCIIToUTF16("section-foo cc-number");
form.fields.push_back(field);
form_structure.reset(new FormStructure(form));
@@ -566,19 +520,30 @@ TEST(FormStructureTest, HeuristicsAutocompletetypeWithFallbacks) {
EXPECT_TRUE(form_structure->IsAutofillable(true));
// Expect the correct number of fields.
- ASSERT_EQ(3U, form_structure->field_count());
- ASSERT_EQ(3U, form_structure->autofill_count());
+ ASSERT_EQ(7U, form_structure->field_count());
+ EXPECT_EQ(7U, form_structure->autofill_count());
EXPECT_EQ(NAME_FIRST, form_structure->field(0)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("full-name-default"),
+ EXPECT_EQ(ASCIIToUTF16("-default-default"),
form_structure->field(0)->section());
EXPECT_EQ(NAME_LAST, form_structure->field(1)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("full-name-default"),
+ EXPECT_EQ(ASCIIToUTF16("foo-default-default"),
form_structure->field(1)->section());
- EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER,
- form_structure->field(2)->heuristic_type());
- EXPECT_EQ(ASCIIToUTF16("shipping-default"),
+ EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(2)->heuristic_type());
+ EXPECT_EQ(ASCIIToUTF16("-shipping-default"),
form_structure->field(2)->section());
+ EXPECT_EQ(ADDRESS_HOME_LINE2, form_structure->field(3)->heuristic_type());
+ EXPECT_EQ(ASCIIToUTF16("foo-billing-default"),
+ form_structure->field(3)->section());
+ EXPECT_EQ(ADDRESS_HOME_CITY, form_structure->field(4)->heuristic_type());
+ EXPECT_EQ(ASCIIToUTF16("-default-default"),
+ form_structure->field(4)->section());
+ EXPECT_EQ(ADDRESS_HOME_STATE, form_structure->field(5)->heuristic_type());
+ EXPECT_EQ(ASCIIToUTF16("-foo-default-default"),
+ form_structure->field(5)->section());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, form_structure->field(6)->heuristic_type());
+ EXPECT_EQ(ASCIIToUTF16("foo-default-cc"),
+ form_structure->field(6)->section());
}
TEST(FormStructureTest, HeuristicsSample8) {

Powered by Google App Engine
This is Rietveld 408576698