summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorziran.sun@samsung.com <ziran.sun@samsung.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 21:31:44 +0000
committerziran.sun@samsung.com <ziran.sun@samsung.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 21:31:44 +0000
commit9be8ba95def51b39dd0f790d14a7f3dbfb5a2edf (patch)
tree227addb38c9426352e62e906e812ded9b6d69822 /chrome/renderer
parentc67e7090c18dba2a9eee439628718d2c80427c64 (diff)
downloadchromium_src-9be8ba95def51b39dd0f790d14a7f3dbfb5a2edf.zip
chromium_src-9be8ba95def51b39dd0f790d14a7f3dbfb5a2edf.tar.gz
chromium_src-9be8ba95def51b39dd0f790d14a7f3dbfb5a2edf.tar.bz2
Add autofill preview support for Textarea
BUG=314976 R=isherman@chromium.org Review URL: https://codereview.chromium.org/112663005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243977 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/autofill/form_autofill_browsertest.cc67
1 files changed, 46 insertions, 21 deletions
diff --git a/chrome/renderer/autofill/form_autofill_browsertest.cc b/chrome/renderer/autofill/form_autofill_browsertest.cc
index ecb90ab..e12acc40 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().