Index: chrome/renderer/form_manager_unittest.cc |
diff --git a/chrome/renderer/form_manager_unittest.cc b/chrome/renderer/form_manager_unittest.cc |
index 4b6b05aed445317ed6a65e2ae8d51991a6bbdd17..f6fb5a04fb54a18d4568299021ada29cd71c05ad 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\">" |