| 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(). | 
|  |