Chromium Code Reviews| 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..a69317c4ad63d144c4822996fac100aa2cae7d61 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. |
|
Ilya Sherman
2014/01/08 23:01:36
Hmm, this would be nice to fix as well (as a separ
ziran.sun
2014/01/09 10:21:16
I can investigate on this.
|
| + {"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, "suggested TX", ""}, |
|
Ilya Sherman
2014/01/08 23:01:36
nit: Please omit "suggested " from "suggested TX"
ziran.sun
2014/01/09 10:21:16
That's a good point - I wasn't thinking. Sorry abo
ziran.sun
2014/01/09 10:21:16
Done.
|
| + // Select fields preview is not yet supported |
| + {"select-one", "select-nonempty", "CA", "", false, "suggested 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(). |