diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-27 02:19:15 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-27 02:19:15 +0000 |
commit | 8ea2025aafbad247dd50cd19a81a364c14fc5796 (patch) | |
tree | eefb409eea12f709a4a20055b3ba5dcaa74407a0 /chrome/browser/autofill | |
parent | d58b6b41902228daeacacd1c42ce15469c18d4be (diff) | |
download | chromium_src-8ea2025aafbad247dd50cd19a81a364c14fc5796.zip chromium_src-8ea2025aafbad247dd50cd19a81a364c14fc5796.tar.gz chromium_src-8ea2025aafbad247dd50cd19a81a364c14fc5796.tar.bz2 |
AutoFill: Handle filling select controls.
BUG=38222
TEST=none
Review URL: http://codereview.chromium.org/1309003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42891 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill')
-rw-r--r-- | chrome/browser/autofill/address_field_unittest.cc | 42 | ||||
-rw-r--r-- | chrome/browser/autofill/form_structure.cc | 11 | ||||
-rw-r--r-- | chrome/browser/autofill/form_structure_unittest.cc | 130 | ||||
-rw-r--r-- | chrome/browser/autofill/phone_field_unittest.cc | 24 |
4 files changed, 72 insertions, 135 deletions
diff --git a/chrome/browser/autofill/address_field_unittest.cc b/chrome/browser/autofill/address_field_unittest.cc index ea41876..bbcbcf2 100644 --- a/chrome/browser/autofill/address_field_unittest.cc +++ b/chrome/browser/autofill/address_field_unittest.cc @@ -45,8 +45,7 @@ TEST_F(AddressFieldTest, ParseOneLineAddress) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Address"), ASCIIToUTF16("address"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("addr1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -65,8 +64,7 @@ TEST_F(AddressFieldTest, ParseOneLineAddressEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Address"), kEcmlShipToAddress1, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("addr1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -85,15 +83,13 @@ TEST_F(AddressFieldTest, ParseTwoLineAddress) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Address"), ASCIIToUTF16("address"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("addr1"))); list_.push_back( new AutoFillField(webkit_glue::FormField(string16(), string16(), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("addr2"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -115,15 +111,13 @@ TEST_F(AddressFieldTest, ParseTwoLineAddressEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Address"), kEcmlShipToAddress1, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("addr1"))); list_.push_back( new AutoFillField(webkit_glue::FormField(string16(), kEcmlShipToAddress2, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("addr2"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -145,8 +139,7 @@ TEST_F(AddressFieldTest, ParseCity) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("City"), ASCIIToUTF16("city"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("city1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -165,8 +158,7 @@ TEST_F(AddressFieldTest, ParseCityEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("City"), kEcmlShipToCity, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("city1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -185,8 +177,7 @@ TEST_F(AddressFieldTest, ParseState) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("State"), ASCIIToUTF16("state"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("state1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -205,8 +196,7 @@ TEST_F(AddressFieldTest, ParseStateEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("State"), kEcmlShipToStateProv, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("state1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -225,8 +215,7 @@ TEST_F(AddressFieldTest, ParseZip) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Zip"), ASCIIToUTF16("zip"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("zip1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -245,8 +234,7 @@ TEST_F(AddressFieldTest, ParseZipEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Zip"), kEcmlShipToPostalCode, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("zip1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -265,8 +253,7 @@ TEST_F(AddressFieldTest, ParseCountry) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Country"), ASCIIToUTF16("country"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("country1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -285,8 +272,7 @@ TEST_F(AddressFieldTest, ParseCountryEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Country"), kEcmlShipToCountry, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("country1"))); list_.push_back(NULL); iter_ = list_.begin(); diff --git a/chrome/browser/autofill/form_structure.cc b/chrome/browser/autofill/form_structure.cc index dd9cfaa..8628036 100644 --- a/chrome/browser/autofill/form_structure.cc +++ b/chrome/browser/autofill/form_structure.cc @@ -34,7 +34,8 @@ const char* const kXMLElementForm = "form"; const char* const kXMLElementField = "field"; const char* const kAttributeAutoFillType = "autofilltype"; -// The only form control type we handle currently. +// The list of form control types we handle. +const char* const kControlTypeSelect = "select-one"; const char* const kControlTypeText = "text"; // The number of fillable fields necessary for a form to be fillable. @@ -66,9 +67,11 @@ FormStructure::FormStructure(const FormFieldValues& values) std::vector<webkit_glue::FormField>::const_iterator field; for (field = values.elements.begin(); field != values.elements.end(); field++) { - // We currently only handle text fields. This prevents us from thinking we - // can autofill other types of controls, e.g., select, password, hidden. - if (!LowerCaseEqualsASCII(field->form_control_type(), kControlTypeText)) + // We currently only handle text and seleect fields. This prevents us from + // thinking we can autofill other types of controls, e.g., password, hidden, + // submit. + if (!LowerCaseEqualsASCII(field->form_control_type(), kControlTypeText) && + !LowerCaseEqualsASCII(field->form_control_type(), kControlTypeSelect)) continue; // Generate a unique name for this field by appending a counter to the name. diff --git a/chrome/browser/autofill/form_structure_unittest.cc b/chrome/browser/autofill/form_structure_unittest.cc index a8283a5..5b310b4 100644 --- a/chrome/browser/autofill/form_structure_unittest.cc +++ b/chrome/browser/autofill/form_structure_unittest.cc @@ -20,19 +20,15 @@ TEST(FormStructureTest, FieldCount) { values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("username"), ASCIIToUTF16("username"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("password"), ASCIIToUTF16("password"), string16(), - ASCIIToUTF16("password"), - WebInputElement::Password)); + ASCIIToUTF16("password"))); values.elements.push_back(webkit_glue::FormField(string16(), ASCIIToUTF16("Submit"), string16(), - ASCIIToUTF16("submit"), - WebInputElement::Submit)); - + ASCIIToUTF16("submit"))); FormStructure form_structure(values); // Only text fields are counted. @@ -48,18 +44,15 @@ TEST(FormStructureTest, IsAutoFillable) { values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("username"), ASCIIToUTF16("username"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("password"), ASCIIToUTF16("password"), string16(), - ASCIIToUTF16("password"), - WebInputElement::Password)); + ASCIIToUTF16("password"))); values.elements.push_back(webkit_glue::FormField(string16(), ASCIIToUTF16("Submit"), string16(), - ASCIIToUTF16("submit"), - WebInputElement::Submit)); + ASCIIToUTF16("submit"))); form_structure.reset(new FormStructure(values)); EXPECT_FALSE(form_structure->IsAutoFillable()); @@ -67,13 +60,11 @@ TEST(FormStructureTest, IsAutoFillable) { values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("First Name"), ASCIIToUTF16("firstname"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Last Name"), ASCIIToUTF16("lastname"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); form_structure.reset(new FormStructure(values)); EXPECT_TRUE(form_structure->IsAutoFillable()); @@ -102,48 +93,39 @@ TEST(FormStructureTest, Heuristics) { values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("First Name"), ASCIIToUTF16("firstname"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Last Name"), ASCIIToUTF16("lastname"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("EMail"), ASCIIToUTF16("email"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Phone"), ASCIIToUTF16("phone"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Fax"), ASCIIToUTF16("fax"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Address"), ASCIIToUTF16("address"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("City"), ASCIIToUTF16("city"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Zip code"), ASCIIToUTF16("zipcode"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(string16(), ASCIIToUTF16("Submit"), string16(), - ASCIIToUTF16("submit"), - WebInputElement::Submit)); + ASCIIToUTF16("submit"))); form_structure.reset(new FormStructure(values)); EXPECT_TRUE(form_structure->IsAutoFillable()); @@ -198,62 +180,52 @@ TEST(FormStructureTest, HeuristicsSample8) { webkit_glue::FormField(ASCIIToUTF16("Your First Name:"), ASCIIToUTF16("bill.first"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Your Last Name:"), ASCIIToUTF16("bill.last"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Street Address Line 1:"), ASCIIToUTF16("bill.street1"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Street Address Line 2:"), ASCIIToUTF16("bill.street2"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("City:"), ASCIIToUTF16("bill.city"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("State (U.S.):"), ASCIIToUTF16("bill.state"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Zip/Postal Code:"), ASCIIToUTF16("BillTo.PostalCode"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Country:"), ASCIIToUTF16("bill.country"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Phone Number:"), ASCIIToUTF16("BillTo.Phone"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(string16(), ASCIIToUTF16("Submit"), string16(), - ASCIIToUTF16("submit"), - WebInputElement::Submit)); + ASCIIToUTF16("submit"))); form_structure.reset(new FormStructure(values)); EXPECT_TRUE(form_structure->IsAutoFillable()); @@ -307,46 +279,39 @@ TEST(FormStructureTest, HeuristicsSample6) { webkit_glue::FormField(ASCIIToUTF16("E-mail address"), ASCIIToUTF16("email"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Full name"), ASCIIToUTF16("name"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Company"), ASCIIToUTF16("company"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Address"), ASCIIToUTF16("address"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("City"), ASCIIToUTF16("city"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); // TODO(jhawkins): Add state select control. values.elements.push_back( webkit_glue::FormField(ASCIIToUTF16("Zip Code"), ASCIIToUTF16("Home.PostalCode"), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); // TODO(jhawkins): Phone number. values.elements.push_back( webkit_glue::FormField(string16(), ASCIIToUTF16("Submit"), ASCIIToUTF16("continue"), - ASCIIToUTF16("submit"), - WebInputElement::Submit)); + ASCIIToUTF16("submit"))); form_structure.reset(new FormStructure(values)); EXPECT_TRUE(form_structure->IsAutoFillable()); @@ -395,48 +360,39 @@ TEST(FormStructureTest, HeuristicsLabelsOnly) { values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("First Name"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Last Name"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("EMail"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Phone"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Fax"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Address"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Address"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Zip code"), string16(), string16(), - ASCIIToUTF16("text"), - WebInputElement::Text)); + ASCIIToUTF16("text"))); values.elements.push_back(webkit_glue::FormField(string16(), ASCIIToUTF16("Submit"), string16(), - ASCIIToUTF16("submit"), - WebInputElement::Submit)); + ASCIIToUTF16("submit"))); form_structure.reset(new FormStructure(values)); EXPECT_TRUE(form_structure->IsAutoFillable()); diff --git a/chrome/browser/autofill/phone_field_unittest.cc b/chrome/browser/autofill/phone_field_unittest.cc index cef9bb4..e12e894 100644 --- a/chrome/browser/autofill/phone_field_unittest.cc +++ b/chrome/browser/autofill/phone_field_unittest.cc @@ -45,8 +45,7 @@ TEST_F(PhoneFieldTest, ParseOneLinePhone) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), ASCIIToUTF16("phone"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("phone1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -63,8 +62,7 @@ TEST_F(PhoneFieldTest, ParseOneLinePhoneEcml) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), kEcmlShipToPhone, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("phone1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -81,15 +79,13 @@ TEST_F(PhoneFieldTest, ParseTwoLinePhone) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), ASCIIToUTF16("area code"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("areacode1"))); list_.push_back( new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), ASCIIToUTF16("phone"), string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("phone1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -109,15 +105,13 @@ TEST_F(PhoneFieldTest, ParseTwoLinePhoneEcmlShipTo) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), kEcmlShipToPostalCode, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("areacode1"))); list_.push_back( new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), kEcmlShipToPhone, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("phone1"))); list_.push_back(NULL); iter_ = list_.begin(); @@ -137,15 +131,13 @@ TEST_F(PhoneFieldTest, ParseTwoLinePhoneEcmlBillTo) { new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), kEcmlBillToPostalCode, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("areacode1"))); list_.push_back( new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), kEcmlBillToPhone, string16(), - ASCIIToUTF16("text"), - WebKit::WebInputElement::Text), + ASCIIToUTF16("text")), ASCIIToUTF16("phone1"))); list_.push_back(NULL); iter_ = list_.begin(); |