| 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 ecb90abb4aa65ed5ba3cdf52a422e5272d3db62f..e12acc40d344f4c7924349fc30db9ac91a4e0dcd 100644
|
| --- a/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| +++ b/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| @@ -161,7 +161,7 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| typedef void (*FillFormFunction)(const FormData& form,
|
| const WebInputElement& element);
|
|
|
| - typedef WebString (WebInputElement::*GetValueFunction)(void) const;
|
| + typedef WebString (*GetValueFunction)(WebFormControlElement element);
|
|
|
| // Test FormFillxxx functions.
|
| void TestFormFillFunctions(const char* html,
|
| @@ -235,13 +235,11 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| if (element.formControlType() == "select-one") {
|
| value = element.to<WebSelectElement>().value();
|
| } else if (element.formControlType() == "textarea") {
|
| - value = element.to<WebTextAreaElement>().value();
|
| + value = get_value_function(element);
|
| } else {
|
| ASSERT_TRUE(element.formControlType() == "text" ||
|
| element.formControlType() == "month");
|
| - WebInputElement input_element = GetMainFrame()->document().getElementById(
|
| - ASCIIToUTF16(field_case.name)).to<WebInputElement>();
|
| - value = (input_element.*get_value_function)();
|
| + value = get_value_function(element);
|
| }
|
|
|
| const WebString expected_value = ASCIIToUTF16(field_case.expected_value);
|
| @@ -264,6 +262,20 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| FillFormIncludingNonFocusableElements(form, element.form());
|
| }
|
|
|
| + static WebString GetValueWrapper(WebFormControlElement element) {
|
| + if (element.formControlType() == "textarea")
|
| + return element.to<WebTextAreaElement>().value();
|
| +
|
| + return element.to<WebInputElement>().value();
|
| + }
|
| +
|
| + static WebString GetSuggestedValueWrapper(WebFormControlElement element) {
|
| + if (element.formControlType() == "textarea")
|
| + return element.to<WebTextAreaElement>().suggestedValue();
|
| +
|
| + return element.to<WebInputElement>().suggestedValue();
|
| + }
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(FormAutofillTest);
|
| };
|
| @@ -1115,7 +1127,7 @@ TEST_F(FormAutofillTest, FillForm) {
|
| "some multi-\nline value", "Go\naway!"},
|
| };
|
| TestFormFillFunctions(kFormHtml, field_cases, arraysize(field_cases),
|
| - FillForm, &WebInputElement::value);
|
| + FillForm, &GetValueWrapper);
|
| // Verify preview selection.
|
| WebInputElement firstname = GetMainFrame()->document().
|
| getElementById("firstname").to<WebInputElement>();
|
| @@ -1165,34 +1177,47 @@ TEST_F(FormAutofillTest, FillFormIncludingNonFocusableElements) {
|
| };
|
| TestFormFillFunctions(kFormHtml, field_cases, arraysize(field_cases),
|
| &FillFormIncludingNonFocusableElementsWrapper,
|
| - &WebInputElement::value);
|
| + &GetValueWrapper);
|
| }
|
|
|
| TEST_F(FormAutofillTest, PreviewForm) {
|
| - static const char* html =
|
| - "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
|
| - " <INPUT type=\"text\" id=\"firstname\"/>"
|
| - " <INPUT type=\"text\" id=\"lastname\"/>"
|
| - " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>"
|
| - " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>"
|
| - " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>"
|
| - " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
|
| - "</FORM>";
|
| -
|
| static const AutofillFieldCase field_cases[] = {
|
| // Normal empty fields should be previewed.
|
| {"text", "firstname", "", "", true, "suggested firstname",
|
| "suggested firstname"},
|
| {"text", "lastname", "", "", true, "suggested lastname",
|
| "suggested lastname"},
|
| + // Hidden fields should not be extracted to form_data.
|
| // Non empty fields should not be previewed.
|
| - {"text", "notempty", "Hi", "", false, "filled notempty", ""},
|
| + {"text", "notempty", "Hi", "", false, "suggested notempty", ""},
|
| // "noautocomplete" should not be extracted to form_data.
|
| // Disabled fields should not be previewed.
|
| - {"text", "notenabled", "", "", false, "filled notenabled", ""},
|
| + {"text", "notenabled", "", "", false, "suggested notenabled", ""},
|
| + // Readonly fields should not be previewed.
|
| + {"text", "readonly", "", "", false, "suggested readonly", ""},
|
| + // Fields with "visibility: hidden" should not be previewed.
|
| + {"text", "invisible", "", "", false, "suggested invisible",
|
| + ""},
|
| + // Fields with "display:none" should not previewed.
|
| + {"text", "displaynone", "", "", false, "suggested displaynone",
|
| + ""},
|
| + // Regular <input type="month"> should not be previewed.
|
| + {"month", "month", "", "", false, "2017-11", ""},
|
| + // Non-empty <input type="month"> should not be previewed.
|
| + {"month", "month-nonempty", "2011-12", "", false, "2017-11", ""},
|
| + // Regular select fields preview is not yet supported
|
| + {"select-one", "select", "", "", false, "TX", ""},
|
| + // Select fields preview is not yet supported
|
| + {"select-one", "select-nonempty", "CA", "", false, "TX", "CA"},
|
| + // Normal textarea elements should be previewed.
|
| + {"textarea", "textarea", "", "", true, "suggested multi-\nline value",
|
| + "suggested multi-\nline value"},
|
| + // Nonempty textarea elements should not be previewed.
|
| + {"textarea", "textarea-nonempty", "Go\naway!", "", false,
|
| + "suggested multi-\nline value", ""},
|
| };
|
| - TestFormFillFunctions(html, field_cases, arraysize(field_cases), &PreviewForm,
|
| - &WebInputElement::suggestedValue);
|
| + TestFormFillFunctions(kFormHtml, field_cases, arraysize(field_cases),
|
| + &PreviewForm, &GetSuggestedValueWrapper);
|
|
|
| // Verify preview selection.
|
| WebInputElement firstname = GetMainFrame()->document().
|
|
|