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 7d5e4db39ce98372bde73f8605d6848a505d1c33..a92c51d4d8c62897ead44b33009472f72f058452 100644 |
--- a/chrome/renderer/autofill/form_autofill_browsertest.cc |
+++ b/chrome/renderer/autofill/form_autofill_browsertest.cc |
@@ -80,6 +80,10 @@ static const char kFormHtml[] = |
" <OPTION value=\"CA\" selected>California</OPTION>" |
" <OPTION value=\"TX\">Texas</OPTION>" |
" </SELECT>" |
+ " <SELECT id=\"select-unchanged\">" |
+ " <OPTION value=\"CA\" selected>California</OPTION>" |
+ " <OPTION value=\"TX\">Texas</OPTION>" |
+ " </SELECT>" |
" <TEXTAREA id=\"textarea\"></TEXTAREA>" |
" <TEXTAREA id=\"textarea-nonempty\">Go away!</TEXTAREA>" |
" <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
@@ -215,6 +219,8 @@ class FormAutofillTest : public ChromeRenderViewTest { |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[i]); |
// Fill the form_data for the field. |
form_data.fields[i].value = ASCIIToUTF16(field_cases[i].autofill_value); |
+ // Set the is_autofilled property for the field. |
+ form_data.fields[i].is_autofilled = field_cases[i].should_be_autofilled; |
} |
// Autofill the form using the given fill form function. |
@@ -1352,6 +1358,9 @@ TEST_F(FormAutofillTest, FillForm) { |
// Select fields should be autofilled even if they already have a |
// non-empty value. |
{"select-one", "select-nonempty", "CA", "", true, "TX", "TX"}, |
+ // Select fields should not be autofilled if no new value is passed from |
+ // autofill profile. The existing value should not be overriden. |
+ {"select-one", "select-unchanged", "CA", "", false, "CA", "CA"}, |
// Regular textarea elements should be autofilled. |
{"textarea", "textarea", "", "", true, "some multi-\nline value", |
"some multi-\nline value"}, |
@@ -1401,6 +1410,9 @@ TEST_F(FormAutofillTest, FillFormIncludingNonFocusableElements) { |
// Select fields should be autofilled even if they already have a |
// non-empty value. |
{"select-one", "select-nonempty", "CA", "", true, "TX", "TX"}, |
+ // Select fields should not be autofilled if no new value is passed from |
+ // autofill profile. The existing value should not be overriden. |
+ {"select-one", "select-unchanged", "CA", "", false, "CA", "CA"}, |
// Regular textarea elements should be autofilled. |
{"textarea", "textarea", "", "", true, "some multi-\nline value", |
"some multi-\nline value"}, |
@@ -1443,6 +1455,9 @@ TEST_F(FormAutofillTest, PreviewForm) { |
// Select fields should be previewed even if they already have a |
// non-empty value. |
{"select-one", "select-nonempty", "CA", "", true, "TX", "TX"}, |
+ // Select fields should not be previewed if no suggestion is passed from |
+ // autofill profile. |
+ {"select-one", "select-unchanged", "CA", "", false, "", ""}, |
// Normal textarea elements should be previewed. |
{"textarea", "textarea", "", "", true, "suggested multi-\nline value", |
"suggested multi-\nline value"}, |
@@ -2376,6 +2391,9 @@ TEST_F(FormAutofillTest, FillFormMaxLength) { |
form.fields[0].value = ASCIIToUTF16("Brother"); |
form.fields[1].value = ASCIIToUTF16("Jonathan"); |
form.fields[2].value = ASCIIToUTF16("brotherj@example.com"); |
+ form.fields[0].is_autofilled = true; |
+ form.fields[1].is_autofilled = true; |
+ form.fields[2].is_autofilled = true; |
FillForm(form, input_element); |
// Find the newly-filled form that contains the input element. |
@@ -2642,6 +2660,9 @@ TEST_F(FormAutofillTest, FillFormEmptyFormNames) { |
form.fields[0].value = ASCIIToUTF16("Red"); |
form.fields[1].value = ASCIIToUTF16("Yellow"); |
form.fields[2].value = ASCIIToUTF16("Also Yellow"); |
+ form.fields[0].is_autofilled = true; |
+ form.fields[1].is_autofilled = true; |
+ form.fields[2].is_autofilled = true; |
FillForm(form, input_element); |
// Find the newly-filled form that contains the input element. |
@@ -2868,6 +2889,9 @@ TEST_F(FormAutofillTest, FillFormNonEmptyField) { |
form.fields[0].value = ASCIIToUTF16("Wyatt"); |
form.fields[1].value = ASCIIToUTF16("Earp"); |
form.fields[2].value = ASCIIToUTF16("wyatt@example.com"); |
+ form.fields[0].is_autofilled = true; |
+ form.fields[1].is_autofilled = true; |
+ form.fields[2].is_autofilled = true; |
PreviewForm(form, input_element); |
EXPECT_EQ(2, input_element.selectionStart()); |
EXPECT_EQ(5, input_element.selectionEnd()); |