diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-06 21:35:36 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-06 21:35:36 +0000 |
commit | e250e4954c84eabbb9cb6f9d63b0e407996141e6 (patch) | |
tree | 0ff635b09f8a6c8f1f6fdcecfc467be20e0e91c1 /chrome/renderer/form_manager_unittest.cc | |
parent | 0d01f3fd245f3efdad635a69af805722d23be602 (diff) | |
download | chromium_src-e250e4954c84eabbb9cb6f9d63b0e407996141e6.zip chromium_src-e250e4954c84eabbb9cb6f9d63b0e407996141e6.tar.gz chromium_src-e250e4954c84eabbb9cb6f9d63b0e407996141e6.tar.bz2 |
AutoFill: Parse HTMLLabel elements for form control element labels.
BUG=40306
TEST=FormManagerTest.Labels
Review URL: http://codereview.chromium.org/1622004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43761 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/form_manager_unittest.cc')
-rw-r--r-- | chrome/renderer/form_manager_unittest.cc | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/chrome/renderer/form_manager_unittest.cc b/chrome/renderer/form_manager_unittest.cc index 4b6b05a..f6fb5a0 100644 --- a/chrome/renderer/form_manager_unittest.cc +++ b/chrome/renderer/form_manager_unittest.cc @@ -422,8 +422,7 @@ TEST_F(FormManagerTest, Reset) { ASSERT_EQ(0U, forms.size()); } -// http://crbug.com/40306 -TEST_F(FormManagerTest, DISABLED_Labels) { +TEST_F(FormManagerTest, Labels) { LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" " <LABEL for=\"firstname\"> First name: </LABEL>" " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" @@ -466,6 +465,53 @@ TEST_F(FormManagerTest, DISABLED_Labels) { fields[2]); } +// This test is different from FormManagerTest.Labels in that the label elements +// for= attribute is set to the name of the form control element it is a label +// for instead of the id of the form control element. This is invalid because +// the for= attribute must be set to the id of the form control element. +TEST_F(FormManagerTest, InvalidLabels) { + LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" + " <LABEL for=\"firstname\"> First name: </LABEL>" + " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" + " <LABEL for=\"lastname\"> Last name: </LABEL>" + " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\"/>" + " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" + "</FORM>"); + + WebFrame* web_frame = GetMainFrame(); + ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); + + FormManager form_manager; + form_manager.ExtractForms(web_frame); + + std::vector<FormData> forms; + form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + ASSERT_EQ(1U, forms.size()); + + const FormData& form = forms[0]; + EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); + EXPECT_EQ(GURL(web_frame->url()), form.origin); + EXPECT_EQ(GURL("http://cnn.com"), form.action); + + const std::vector<FormField>& fields = form.fields; + ASSERT_EQ(3U, fields.size()); + EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("firstname"), + ASCIIToUTF16("John"), + ASCIIToUTF16("text")), + fields[0]); + EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("lastname"), + ASCIIToUTF16("Smith"), + ASCIIToUTF16("text")), + fields[1]); + EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("reply-send"), + ASCIIToUTF16("Send"), + ASCIIToUTF16("submit")), + fields[2]); +} + // http://crbug.com/40306 TEST_F(FormManagerTest, DISABLED_LabelsInferredFromText) { LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |