Index: chrome/renderer/form_manager_unittest.cc |
diff --git a/chrome/renderer/form_manager_unittest.cc b/chrome/renderer/form_manager_unittest.cc |
index 15f548faf70c0b2da2cdc69666b3804387191be7..2f37362b2aabf11ec6937cdff2e2a5f47338fa40 100644 |
--- a/chrome/renderer/form_manager_unittest.cc |
+++ b/chrome/renderer/form_manager_unittest.cc |
@@ -466,6 +466,49 @@ TEST_F(FormManagerTest, Labels) { |
fields[2]); |
} |
+TEST_F(FormManagerTest, LabelsWithSpans) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
+ " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" |
+ " <INPUT type=\"text\" id=\"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(ASCIIToUTF16("First name:"), |
+ ASCIIToUTF16("firstname"), |
+ ASCIIToUTF16("John"), |
+ ASCIIToUTF16("text")), |
+ fields[0]); |
+ EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
+ ASCIIToUTF16("lastname"), |
+ ASCIIToUTF16("Smith"), |
+ ASCIIToUTF16("text")), |
+ fields[1]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("reply-send"), |
+ ASCIIToUTF16("Send"), |
+ ASCIIToUTF16("submit")), |
+ 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 |