Index: chrome/renderer/form_manager_unittest.cc |
=================================================================== |
--- chrome/renderer/form_manager_unittest.cc (revision 42702) |
+++ chrome/renderer/form_manager_unittest.cc (working copy) |
@@ -19,20 +19,19 @@ |
using webkit_glue::FormData; |
using webkit_glue::FormField; |
-class FormManagerTest : public RenderViewTest { |
- public: |
- FormManagerTest() {} |
-}; |
+namespace { |
+typedef RenderViewTest FormManagerTest; |
+ |
TEST_F(FormManagerTest, ExtractForms) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -67,16 +66,16 @@ |
TEST_F(FormManagerTest, ExtractMultipleForms) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>" |
"<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"second\" value=\"Submit\">" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"second\" value=\"Submit\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -128,12 +127,12 @@ |
// Form is not auto-completable due to autocomplete=off. |
LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\"" |
" autocomplete=off>" |
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -152,12 +151,12 @@ |
LoadHTML("<FORM name=\"TestForm\" action=\"http://abc.com\" method=\"post\">" |
" <INPUT type=\"text\" id=\"firstname\" value=\"John\"" |
" autocomplete=off>" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"reply\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"reply\" value=\"Send\"/>" |
"</FORM>"); |
web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
form_manager.Reset(); |
form_manager.ExtractForms(web_frame); |
@@ -188,13 +187,13 @@ |
TEST_F(FormManagerTest, GetFormsElementsEnabled) { |
// The firstname element is not enabled due to disabled being set. |
LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">" |
- " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\">" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"submit\" value=\"Send\">" |
+ " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"submit\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -224,13 +223,13 @@ |
TEST_F(FormManagerTest, FindForm) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -273,13 +272,13 @@ |
TEST_F(FormManagerTest, FillForm) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
- " <INPUT type=\"text\" id=\"firstname\">" |
- " <INPUT type=\"text\" id=\"lastname\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"firstname\"/>" |
+ " <INPUT type=\"text\" id=\"lastname\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -352,13 +351,13 @@ |
TEST_F(FormManagerTest, Reset) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -378,14 +377,14 @@ |
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\">" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
" <LABEL for=\"lastname\"> Last name: </LABEL>" |
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" |
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" |
+ " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
+ " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
"</FORM>"); |
WebFrame* web_frame = GetMainFrame(); |
- ASSERT_TRUE(web_frame); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
FormManager form_manager; |
form_manager.ExtractForms(web_frame); |
@@ -417,3 +416,91 @@ |
ASCIIToUTF16("submit"), |
WebInputElement::Submit), fields[2]); |
} |
+ |
+TEST_F(FormManagerTest, LabelsFromInferredText) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
+ " First name:" |
+ " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
+ " Last name:" |
+ " <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(&forms, FormManager::REQUIRE_NONE); |
+ 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"), |
+ WebInputElement::Text), fields[0]); |
+ EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
+ ASCIIToUTF16("lastname"), |
+ ASCIIToUTF16("Smith"), |
+ ASCIIToUTF16("text"), |
+ WebInputElement::Text), fields[1]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("reply-send"), |
+ ASCIIToUTF16("Send"), |
+ ASCIIToUTF16("submit"), |
+ WebInputElement::Submit), fields[2]); |
+} |
+ |
+TEST_F(FormManagerTest, LabelsFromInferredParagraph) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
+ " <P>First name:</P><INPUT type=\"text\" " |
+ " id=\"firstname\" value=\"John\"/>" |
+ " <P>Last name:</P>" |
+ " <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(&forms, FormManager::REQUIRE_NONE); |
+ 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"), |
+ WebInputElement::Text), fields[0]); |
+ EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
+ ASCIIToUTF16("lastname"), |
+ ASCIIToUTF16("Smith"), |
+ ASCIIToUTF16("text"), |
+ WebInputElement::Text), fields[1]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("reply-send"), |
+ ASCIIToUTF16("Send"), |
+ ASCIIToUTF16("submit"), |
+ WebInputElement::Submit), fields[2]); |
+} |
+ |
+} // namespace |