| Index: chrome/renderer/autofill/form_autofill_browsertest.cc
|
| diff --git a/chrome/renderer/autofill/form_autofill_browsertest.cc b/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| index e12acc40d344f4c7924349fc30db9ac91a4e0dcd..7f56ba43d0565628acccb1bc72c724dc4363d30a 100644
|
| --- a/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| +++ b/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| @@ -159,7 +159,7 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| }
|
|
|
| typedef void (*FillFormFunction)(const FormData& form,
|
| - const WebInputElement& element);
|
| + const WebFormControlElement& element);
|
|
|
| typedef WebString (*GetValueFunction)(WebFormControlElement element);
|
|
|
| @@ -187,10 +187,10 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| FormData form_data;
|
| FormFieldData field;
|
| EXPECT_TRUE(
|
| - FindFormAndFieldForInputElement(input_element,
|
| - &form_data,
|
| - &field,
|
| - autofill::REQUIRE_AUTOCOMPLETE));
|
| + FindFormAndFieldForFormControlElement(input_element,
|
| + &form_data,
|
| + &field,
|
| + autofill::REQUIRE_AUTOCOMPLETE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form_data.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form_data.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form_data.action);
|
| @@ -258,7 +258,7 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
|
|
| static void FillFormIncludingNonFocusableElementsWrapper(
|
| const FormData& form,
|
| - const WebInputElement& element) {
|
| + const WebFormControlElement& element) {
|
| FillFormIncludingNonFocusableElements(form, element.form());
|
| }
|
|
|
| @@ -1002,7 +1002,7 @@ TEST_F(FormAutofillTest, WebFormElementToFormDataAutocomplete) {
|
| }
|
| }
|
|
|
| -TEST_F(FormAutofillTest, FindForm) {
|
| +TEST_F(FormAutofillTest, FindFormForInputElement) {
|
| LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
|
| " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
|
| " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
|
| @@ -1027,8 +1027,10 @@ TEST_F(FormAutofillTest, FindForm) {
|
| // Find the form and verify it's the correct form.
|
| FormData form;
|
| FormFieldData field;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -1062,8 +1064,11 @@ TEST_F(FormAutofillTest, FindForm) {
|
| // Try again, but require autocomplete.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
|
| - autofill::REQUIRE_AUTOCOMPLETE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(
|
| + input_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_AUTOCOMPLETE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form2.action);
|
| @@ -1088,6 +1093,109 @@ TEST_F(FormAutofillTest, FindForm) {
|
| EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]);
|
| }
|
|
|
| +TEST_F(FormAutofillTest, FindFormForTextAreaElement) {
|
| + 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=\"text\" id=\"email\" value=\"john@example.com\""
|
| + "autocomplete=\"off\" />"
|
| + " <TEXTAREA id=\"street-address\">"
|
| + "123 Fantasy Ln. "
|
| + "Apt. 42"
|
| + "</TEXTAREA>"
|
| + " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
|
| + "</FORM>");
|
| +
|
| + WebFrame* web_frame = GetMainFrame();
|
| + ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
|
| +
|
| + FormCache form_cache;
|
| + std::vector<FormData> forms;
|
| + form_cache.ExtractForms(*web_frame, &forms);
|
| + ASSERT_EQ(1U, forms.size());
|
| +
|
| + // Get the textarea element we want to find.
|
| + WebElement element = web_frame->document().getElementById("street-address");
|
| + WebTextAreaElement textarea_element = element.to<WebTextAreaElement>();
|
| +
|
| + // Find the form and verify it's the correct form.
|
| + FormData form;
|
| + FormFieldData field;
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(textarea_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| + EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| + EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| + EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| +
|
| + const std::vector<FormFieldData>& fields = form.fields;
|
| + ASSERT_EQ(4U, fields.size());
|
| +
|
| + FormFieldData expected;
|
| +
|
| + expected.name = ASCIIToUTF16("firstname");
|
| + expected.value = ASCIIToUTF16("John");
|
| + expected.form_control_type = "text";
|
| + expected.max_length = WebInputElement::defaultMaxLength();
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
|
| +
|
| + expected.name = ASCIIToUTF16("lastname");
|
| + expected.value = ASCIIToUTF16("Smith");
|
| + expected.form_control_type = "text";
|
| + expected.max_length = WebInputElement::defaultMaxLength();
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
|
| +
|
| + expected.name = ASCIIToUTF16("email");
|
| + expected.value = ASCIIToUTF16("john@example.com");
|
| + expected.autocomplete_attribute = "off";
|
| + expected.form_control_type = "text";
|
| + expected.max_length = WebInputElement::defaultMaxLength();
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
|
| + expected.autocomplete_attribute = std::string(); // reset
|
| +
|
| + expected.name = ASCIIToUTF16("street-address");
|
| + expected.value = ASCIIToUTF16("123 Fantasy Ln.\nApt. 42");
|
| + expected.form_control_type = "textarea";
|
| + expected.max_length = 0;
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[3]);
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, field);
|
| +
|
| + // Try again, but require autocomplete.
|
| + FormData form2;
|
| + FormFieldData field2;
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(
|
| + textarea_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_AUTOCOMPLETE));
|
| + EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| + EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| + EXPECT_EQ(GURL("http://buh.com"), form2.action);
|
| +
|
| + const std::vector<FormFieldData>& fields2 = form2.fields;
|
| + ASSERT_EQ(3U, fields2.size());
|
| +
|
| + expected.name = ASCIIToUTF16("firstname");
|
| + expected.value = ASCIIToUTF16("John");
|
| + expected.form_control_type = "text";
|
| + expected.max_length = WebInputElement::defaultMaxLength();
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]);
|
| +
|
| + expected.name = ASCIIToUTF16("lastname");
|
| + expected.value = ASCIIToUTF16("Smith");
|
| + expected.form_control_type = "text";
|
| + expected.max_length = WebInputElement::defaultMaxLength();
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]);
|
| +
|
| + expected.name = ASCIIToUTF16("street-address");
|
| + expected.value = ASCIIToUTF16("123 Fantasy Ln.\nApt. 42");
|
| + expected.form_control_type = "textarea";
|
| + expected.max_length = 0;
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]);
|
| + EXPECT_FORM_FIELD_DATA_EQUALS(expected, field);
|
| +}
|
| +
|
| // Test regular FillForm function.
|
| TEST_F(FormAutofillTest, FillForm) {
|
| static const AutofillFieldCase field_cases[] = {
|
| @@ -2109,8 +2217,10 @@ TEST_F(FormAutofillTest, FillFormMaxLength) {
|
| // Find the form that contains the input element.
|
| FormData form;
|
| FormFieldData field;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -2145,8 +2255,10 @@ TEST_F(FormAutofillTest, FillFormMaxLength) {
|
| // Find the newly-filled form that contains the input element.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
|
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| @@ -2202,8 +2314,10 @@ TEST_F(FormAutofillTest, FillFormNegativeMaxLength) {
|
| // Find the form that contains the input element.
|
| FormData form;
|
| FormFieldData field;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -2233,8 +2347,10 @@ TEST_F(FormAutofillTest, FillFormNegativeMaxLength) {
|
| // Find the newly-filled form that contains the input element.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
|
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| @@ -2279,8 +2395,10 @@ TEST_F(FormAutofillTest, FillFormEmptyName) {
|
| // Find the form that contains the input element.
|
| FormData form;
|
| FormFieldData field;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -2310,8 +2428,10 @@ TEST_F(FormAutofillTest, FillFormEmptyName) {
|
| // Find the newly-filled form that contains the input element.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
|
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| @@ -2365,8 +2485,10 @@ TEST_F(FormAutofillTest, FillFormEmptyFormNames) {
|
| // Find the form that contains the input element.
|
| FormData form;
|
| FormFieldData field;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(base::string16(), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| EXPECT_EQ(GURL("http://abc.com"), form.action);
|
| @@ -2399,8 +2521,10 @@ TEST_F(FormAutofillTest, FillFormEmptyFormNames) {
|
| // Find the newly-filled form that contains the input element.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
|
|
| EXPECT_EQ(base::string16(), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| @@ -2584,8 +2708,10 @@ TEST_F(FormAutofillTest, FillFormNonEmptyField) {
|
| // Find the form that contains the input element.
|
| FormData form;
|
| FormFieldData field;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form,
|
| + &field,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -2626,8 +2752,10 @@ TEST_F(FormAutofillTest, FillFormNonEmptyField) {
|
| // Find the newly-filled form that contains the input element.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
|
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| @@ -2701,8 +2829,10 @@ TEST_F(FormAutofillTest, ClearFormWithNode) {
|
| // Verify the form is cleared.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(firstname, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(firstname,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form2.action);
|
| @@ -2803,8 +2933,10 @@ TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOne) {
|
| // Verify the form is cleared.
|
| FormData form2;
|
| FormFieldData field2;
|
| - EXPECT_TRUE(FindFormAndFieldForInputElement(firstname, &form2, &field2,
|
| - autofill::REQUIRE_NONE));
|
| + EXPECT_TRUE(FindFormAndFieldForFormControlElement(firstname,
|
| + &form2,
|
| + &field2,
|
| + autofill::REQUIRE_NONE));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| EXPECT_EQ(GURL("http://buh.com"), form2.action);
|
|
|