| Index: chrome/renderer/form_manager_browsertest.cc
|
| diff --git a/chrome/renderer/form_manager_browsertest.cc b/chrome/renderer/form_manager_browsertest.cc
|
| index a72b60187a14e4ac8f4b399d058090b26f5b2e41..70ba952d2f52701db9806b9dbd550ec6a26f2730 100644
|
| --- a/chrome/renderer/form_manager_browsertest.cc
|
| +++ b/chrome/renderer/form_manager_browsertest.cc
|
| @@ -32,7 +32,49 @@ using webkit_glue::FormField;
|
|
|
| namespace {
|
|
|
| -typedef RenderViewTest FormManagerTest;
|
| +class FormManagerTest : public RenderViewTest {
|
| + public:
|
| + // Load a single form from an HTML snippet.
|
| + void LoadForm(const char* const html, FormData *form);
|
| +
|
| + // Test that we have extracted the default form data (disregarding the form
|
| + // fields).
|
| + void ExpectDefaultForm(const FormData& form);
|
| +
|
| + // Test that the form loaded from |html| has locale |locale|.
|
| + void ExpectLocale(const char* const locale, const char* const html);
|
| +};
|
| +
|
| +void FormManagerTest::LoadForm(const char* const html, FormData *form) {
|
| + LoadHTML(html);
|
| +
|
| + 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());
|
| +
|
| + *form = forms[0];
|
| + EXPECT_EQ(GURL(web_frame->url()), form->origin);
|
| +}
|
| +
|
| +void FormManagerTest::ExpectDefaultForm(const FormData& form) {
|
| + EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| + EXPECT_EQ(ASCIIToUTF16("post"), form.method);
|
| + EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
| + EXPECT_EQ(std::string(), form.locale);
|
| +}
|
| +
|
| +void FormManagerTest::ExpectLocale(const char* const locale,
|
| + const char* const html) {
|
| + FormData form;
|
| + LoadForm(html, &form);
|
| + EXPECT_EQ(locale, form.locale);
|
| +}
|
|
|
| TEST_F(FormManagerTest, WebFormElementToFormData) {
|
| LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| @@ -54,9 +96,8 @@ TEST_F(FormManagerTest, WebFormElementToFormData) {
|
| FormManager::REQUIRE_NONE,
|
| true,
|
| &form));
|
| - EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(frame->url()), form.origin);
|
| - EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(4U, fields.size());
|
| @@ -86,6 +127,57 @@ TEST_F(FormManagerTest, WebFormElementToFormData) {
|
| 0)));
|
| }
|
|
|
| +// Ensure that form locales are correctly determined from the DOM.
|
| +// We are essentially duplicating a WebKit layout test here, but better safe
|
| +// than sorry.
|
| +TEST_F(FormManagerTest, FormLocale) {
|
| + // Test the default behavior, when no locale is specified.
|
| + ExpectLocale("",
|
| + "<FORM>"
|
| + " <INPUT type=\"text\" value=\"dummy\"/>"
|
| + "</FORM>");
|
| +
|
| + // Test that we correctly detect the locale when it is directly specified.
|
| + ExpectLocale("fr-CA",
|
| + "<FORM lang=\"fr-CA\">"
|
| + " <INPUT type=\"text\" value=\"dummy\"/>"
|
| + "</FORM>");
|
| +
|
| + // Test that the locale is properly inherited.
|
| + ExpectLocale("en-GB",
|
| + "<DIV lang=\"en-GB\">"
|
| + " <FORM>"
|
| + " <INPUT type=\"text\" value=\"dummy\"/>"
|
| + " </FORM>"
|
| + "</DIV>");
|
| +
|
| + // Test that inheritance stops properly.
|
| + ExpectLocale("en-US",
|
| + "<DIV lang=\"en-GB\">"
|
| + " <FORM lang=\"en-US\">"
|
| + " <INPUT type=\"text\" value=\"dummy\"/>"
|
| + " </FORM>"
|
| + "</DIV>");
|
| +
|
| + // Test that we use the Content-Language meta tag as a fallback.
|
| + ExpectLocale("en-GB",
|
| + "<HTML>"
|
| + " <HEAD>"
|
| + " <META http-equiv=\"Content-Language\" content=\"en-GB\" />"
|
| + " </HEAD>"
|
| + " <FORM>"
|
| + " <INPUT type=\"text\" value=\"dummy\"/>"
|
| + " </FORM>"
|
| + "</HTML>");
|
| +
|
| + // WebKit does absolutely no validation of the lang attribute; we shouldn't
|
| + // validate here either.
|
| + ExpectLocale(" this is-not a meaningful_locale! ",
|
| + "<FORM lang=\" this is-not a meaningful_locale! \">"
|
| + " <INPUT type=\"text\" value=\"dummy\"/>"
|
| + "</FORM>");
|
| +}
|
| +
|
| TEST_F(FormManagerTest, ExtractForms) {
|
| LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
|
| @@ -104,9 +196,8 @@ TEST_F(FormManagerTest, ExtractForms) {
|
| 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);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -152,9 +243,8 @@ TEST_F(FormManagerTest, ExtractMultipleForms) {
|
|
|
| // First form.
|
| 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);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(2U, fields.size());
|
| @@ -239,6 +329,7 @@ TEST_F(FormManagerTest, GetFormsAutocomplete) {
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->url()), form.origin);
|
| EXPECT_EQ(GURL("http://abc.com"), form.action);
|
| + EXPECT_EQ(std::string(), form.locale);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(2U, fields.size());
|
| @@ -623,28 +714,16 @@ TEST_F(FormManagerTest, Reset) {
|
| }
|
|
|
| TEST_F(FormManagerTest, Labels) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| " <LABEL for=\"firstname\"> First name: </LABEL>"
|
| " <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\"/>"
|
| - "</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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -669,28 +748,16 @@ TEST_F(FormManagerTest, Labels) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsWithSpans) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -719,28 +786,16 @@ TEST_F(FormManagerTest, LabelsWithSpans) {
|
| // 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\">"
|
| + FormData form;
|
| + LoadForm("<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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -786,9 +841,8 @@ TEST_F(FormManagerTest, OneLabelElementFirstControlElementDisabled) {
|
| 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);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -813,28 +867,16 @@ TEST_F(FormManagerTest, OneLabelElementFirstControlElementDisabled) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredFromText) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<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(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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -859,28 +901,16 @@ TEST_F(FormManagerTest, LabelsInferredFromText) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredFromTextHidden) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| " First name:"
|
| " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>"
|
| " Last name:"
|
| " <INPUT type=\"hidden\" 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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -902,28 +932,16 @@ TEST_F(FormManagerTest, LabelsInferredFromTextHidden) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredFromParagraph) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<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(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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -948,7 +966,8 @@ TEST_F(FormManagerTest, LabelsInferredFromParagraph) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredFromTableCell) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| "<TABLE>"
|
| " <TR>"
|
| " <TD>First name:</TD>"
|
| @@ -965,22 +984,9 @@ TEST_F(FormManagerTest, LabelsInferredFromTableCell) {
|
| " </TD>"
|
| " </TR>"
|
| "</TABLE>"
|
| - "</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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -1005,7 +1011,8 @@ TEST_F(FormManagerTest, LabelsInferredFromTableCell) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| "<TABLE>"
|
| " <TR>"
|
| " <TD>"
|
| @@ -1041,22 +1048,9 @@ TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) {
|
| " </TD>"
|
| " </TR>"
|
| "</TABLE>"
|
| - "</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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -1081,7 +1075,8 @@ TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| "<DL>"
|
| " <DT>"
|
| " <SPAN>"
|
| @@ -1114,22 +1109,9 @@ TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) {
|
| " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
|
| " </DD>"
|
| "</DL>"
|
| - "</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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -1154,28 +1136,16 @@ TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredWithSameName) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| " Address Line 1:"
|
| " <INPUT type=\"text\" name=\"Address\"/>"
|
| " Address Line 2:"
|
| " <INPUT type=\"text\" name=\"Address\"/>"
|
| " <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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
| @@ -1200,7 +1170,8 @@ TEST_F(FormManagerTest, LabelsInferredWithSameName) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsInferredWithImageTags) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| " Phone:"
|
| " <input type=\"text\" name=\"dayphone1\">"
|
| " <img/>"
|
| @@ -1215,23 +1186,9 @@ TEST_F(FormManagerTest, LabelsInferredWithImageTags) {
|
| " <input type=\"text\" name=\"dayphone4\">"
|
| " <input type=\"text\" name=\"dummy\">"
|
| " <input type=\"submit\" name=\"reply-send\" value=\"Send\">"
|
| - "</FORM>");
|
| -
|
| - WebFrame* frame = GetMainFrame();
|
| - ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
|
| -
|
| - WebVector<WebFormElement> forms;
|
| - frame->forms(forms);
|
| - ASSERT_EQ(1U, forms.size());
|
| -
|
| - FormData form;
|
| - EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
|
| - FormManager::REQUIRE_NONE,
|
| - true,
|
| - &form));
|
| - EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| - EXPECT_EQ(GURL(frame->url()), form.origin);
|
| - EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(6U, fields.size());
|
| @@ -2007,9 +1964,8 @@ TEST_F(FormManagerTest, ThreePartPhone) {
|
| FormManager::REQUIRE_NONE,
|
| true,
|
| &form));
|
| - EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(frame->url()), form.origin);
|
| - EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(5U, fields.size());
|
| @@ -2074,9 +2030,8 @@ TEST_F(FormManagerTest, SizeFields) {
|
| FormManager::REQUIRE_NONE,
|
| true,
|
| &form));
|
| - EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(frame->url()), form.origin);
|
| - EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(7U, fields.size());
|
| @@ -2387,28 +2342,16 @@ TEST_F(FormManagerTest, FormWithNodeIsAutoFilled) {
|
| }
|
|
|
| TEST_F(FormManagerTest, LabelsHiddenFields) {
|
| - LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| + FormData form;
|
| + LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
|
| " <LABEL for=\"firstname\"> First name: </LABEL>"
|
| " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>"
|
| " <LABEL for=\"lastname\"> Last name: </LABEL>"
|
| " <INPUT type=\"hidden\" 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);
|
| + "</FORM>",
|
| + &form);
|
| + ExpectDefaultForm(form);
|
|
|
| const std::vector<FormField>& fields = form.fields;
|
| ASSERT_EQ(3U, fields.size());
|
|
|