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 6fc2d445e45a452847f17031cd760ede043fd74a..7b3e1aad4809c7d1cad853d664644c94ac824aa2 100644 |
--- a/chrome/renderer/autofill/form_autofill_browsertest.cc |
+++ b/chrome/renderer/autofill/form_autofill_browsertest.cc |
@@ -73,7 +73,7 @@ struct WebElementDescriptor { |
}; |
const char kFormHtml[] = |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='hidden' id='imhidden'/>" |
@@ -374,7 +374,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
&field)); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form_data.name); |
- EXPECT_EQ(GURL("http://buh.com"), form_data.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form_data.action); |
} |
const std::vector<FormFieldData>& fields = form_data.fields; |
@@ -634,7 +634,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -691,7 +691,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -752,7 +752,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -794,7 +794,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form2.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
- EXPECT_EQ(GURL("http://buh.com"), form2.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form2.action); |
} |
const std::vector<FormFieldData>& fields2 = form2.fields; |
@@ -842,7 +842,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -876,7 +876,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form2.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
- EXPECT_EQ(GURL("http://buh.com"), form2.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form2.action); |
} |
const std::vector<FormFieldData>& fields2 = form2.fields; |
@@ -916,7 +916,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -950,7 +950,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form2.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
- EXPECT_EQ(GURL("http://buh.com"), form2.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form2.action); |
} |
const std::vector<FormFieldData>& fields2 = form2.fields; |
@@ -1057,7 +1057,10 @@ class FormAutofillTest : public ChromeRenderViewTest { |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[unowned_offset + 2]); |
} |
- void TestFillFormNonEmptyField(const char* html, bool unowned) { |
+ void TestFillFormNonEmptyField(const char* html, |
+ bool unowned, |
+ const char* initial_lastname, |
+ const char* initial_email) { |
LoadHTML(html); |
WebFrame* web_frame = GetMainFrame(); |
ASSERT_NE(nullptr, web_frame); |
@@ -1081,7 +1084,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -1097,12 +1100,24 @@ class FormAutofillTest : public ChromeRenderViewTest { |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); |
expected.name = ASCIIToUTF16("lastname"); |
- expected.value.clear(); |
+ if (initial_lastname) { |
+ expected.label = ASCIIToUTF16(initial_lastname); |
+ expected.value = ASCIIToUTF16(initial_lastname); |
+ } else { |
+ expected.label.clear(); |
+ expected.value.clear(); |
+ } |
expected.is_autofilled = false; |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); |
expected.name = ASCIIToUTF16("email"); |
- expected.value.clear(); |
+ if (initial_email) { |
+ expected.label = ASCIIToUTF16(initial_email); |
+ expected.value = ASCIIToUTF16(initial_email); |
+ } else { |
+ expected.label.clear(); |
+ expected.value.clear(); |
+ } |
expected.is_autofilled = false; |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); |
@@ -1129,7 +1144,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
form2.origin); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
- EXPECT_EQ(GURL("http://buh.com"), form2.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form2.action); |
} |
const std::vector<FormFieldData>& fields2 = form2.fields; |
@@ -1137,16 +1152,19 @@ class FormAutofillTest : public ChromeRenderViewTest { |
expected.name = ASCIIToUTF16("firstname"); |
expected.value = ASCIIToUTF16("Wyatt"); |
+ expected.label.clear(); |
expected.is_autofilled = true; |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]); |
expected.name = ASCIIToUTF16("lastname"); |
expected.value = ASCIIToUTF16("Earp"); |
+ expected.label.clear(); |
expected.is_autofilled = true; |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]); |
expected.name = ASCIIToUTF16("email"); |
expected.value = ASCIIToUTF16("wyatt@example.com"); |
+ expected.label.clear(); |
expected.is_autofilled = true; |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]); |
@@ -1194,7 +1212,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
EXPECT_FALSE(form.origin.is_empty()); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -1295,7 +1313,7 @@ class FormAutofillTest : public ChromeRenderViewTest { |
EXPECT_FALSE(form.origin.is_empty()); |
if (!unowned) { |
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
- EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ EXPECT_EQ(GURL("http://abc.com"), form.action); |
} |
const std::vector<FormFieldData>& fields = form.fields; |
@@ -2561,7 +2579,7 @@ TEST_F(FormAutofillTest, WebFormElementToFormDataAutocomplete) { |
TEST_F(FormAutofillTest, FindFormForInputElement) { |
TestFindFormForInputElement( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='John'/>" |
" <INPUT type='text' id='lastname' value='Smith'/>" |
" <INPUT type='text' id='email' value='john@example.com'" |
@@ -2586,7 +2604,7 @@ TEST_F(FormAutofillTest, FindFormForInputElementForUnownedForm) { |
TEST_F(FormAutofillTest, FindFormForTextAreaElement) { |
TestFindFormForTextAreaElement( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='John'/>" |
" <INPUT type='text' id='lastname' value='Smith'/>" |
" <INPUT type='text' id='email' value='john@example.com'" |
@@ -3726,7 +3744,7 @@ TEST_F(FormAutofillTest, LabelsInferredFromDefinitionListRatherThanDivTable) { |
TEST_F(FormAutofillTest, FillFormMaxLength) { |
TestFillFormMaxLength( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' maxlength='5'/>" |
" <INPUT type='text' id='lastname' maxlength='7'/>" |
" <INPUT type='text' id='email' maxlength='9'/>" |
@@ -3751,7 +3769,7 @@ TEST_F(FormAutofillTest, FillFormMaxLengthForUnownedForm) { |
TEST_F(FormAutofillTest, FillFormNegativeMaxLength) { |
TestFillFormNegativeMaxLength( |
"<HEAD><TITLE>delivery recipient info</TITLE></HEAD>" |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' maxlength='-1'/>" |
" <INPUT type='text' id='lastname' maxlength='-10'/>" |
" <INPUT type='text' id='email' maxlength='-13'/>" |
@@ -3772,7 +3790,7 @@ TEST_F(FormAutofillTest, FillFormNegativeMaxLengthForUnownedForm) { |
TEST_F(FormAutofillTest, FillFormEmptyName) { |
TestFillFormEmptyName( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='text' id='email'/>" |
@@ -3793,7 +3811,7 @@ TEST_F(FormAutofillTest, FillFormEmptyNameForUnownedForm) { |
TEST_F(FormAutofillTest, FillFormEmptyFormNames) { |
TestFillFormEmptyFormNames( |
- "<FORM action='http://buh.com' method='post'>" |
+ "<FORM action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname'/>" |
" <INPUT type='text' id='middlename'/>" |
" <INPUT type='text' id='lastname'/>" |
@@ -3953,13 +3971,24 @@ TEST_F(FormAutofillTest, MaxLengthFields) { |
// into should be filled even though it's not technically empty. |
TEST_F(FormAutofillTest, FillFormNonEmptyField) { |
TestFillFormNonEmptyField( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='text' id='email'/>" |
" <INPUT type='submit' value='Send'/>" |
"</FORM>", |
- false); |
+ false, nullptr, nullptr); |
+} |
+ |
+TEST_F(FormAutofillTest, FillFormNonEmptyFieldsWithDefaultValues) { |
+ TestFillFormNonEmptyField( |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
+ " <INPUT type='text' id='firstname' value='Enter first name'/>" |
+ " <INPUT type='text' id='lastname' value='Enter last name'/>" |
+ " <INPUT type='text' id='email' value='Enter email'/>" |
+ " <INPUT type='submit' value='Send'/>" |
+ "</FORM>", |
+ false, "Enter last name", "Enter email"); |
} |
TEST_F(FormAutofillTest, FillFormNonEmptyFieldForUnownedForm) { |
@@ -3969,12 +3998,12 @@ TEST_F(FormAutofillTest, FillFormNonEmptyFieldForUnownedForm) { |
"<INPUT type='text' id='lastname'/>" |
"<INPUT type='text' id='email'/>" |
"<INPUT type='submit' value='Send'/>", |
- true); |
+ true, nullptr, nullptr); |
} |
TEST_F(FormAutofillTest, ClearFormWithNode) { |
TestClearFormWithNode( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='Wyatt'/>" |
" <INPUT type='text' id='lastname' value='Earp'/>" |
" <INPUT type='text' autocomplete='off' id='noAC' value='one'/>" |
@@ -4014,7 +4043,7 @@ TEST_F(FormAutofillTest, ClearFormWithNodeForUnownedForm) { |
TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOne) { |
TestClearFormWithNodeContainingSelectOne( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='Wyatt'/>" |
" <INPUT type='text' id='lastname' value='Earp'/>" |
" <SELECT id='state' name='state'>" |
@@ -4045,7 +4074,7 @@ TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOneForUnownedForm) { |
TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) { |
TestClearPreviewedFormWithElement( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='Wyatt'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='text' id='email'/>" |
@@ -4068,7 +4097,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithElementForUnownedForm) { |
TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) { |
TestClearPreviewedFormWithNonEmptyInitiatingNode( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='W'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='text' id='email'/>" |
@@ -4092,7 +4121,7 @@ TEST_F(FormAutofillTest, |
TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) { |
TestClearPreviewedFormWithAutofilledInitiatingNode( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='W'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='text' id='email'/>" |
@@ -4117,7 +4146,7 @@ TEST_F(FormAutofillTest, |
// Autofill's "Clear Form" should clear only autofilled fields |
TEST_F(FormAutofillTest, ClearOnlyAutofilledFields) { |
TestClearOnlyAutofilledFields( |
- "<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ "<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname' value='Wyatt'/>" |
" <INPUT type='text' id='lastname' value='Earp'/>" |
" <INPUT type='email' id='email' value='wyatt@earp.com'/>" |
@@ -4443,23 +4472,23 @@ TEST_F(FormAutofillTest, FormCache_ExtractNewForms) { |
const bool is_formless_checkout; |
} test_cases[] = { |
// An empty form should not be extracted |
- {"<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ {"<FORM name='TestForm' action='http://abc.com' method='post'>" |
"</FORM>", |
false, true, false}, |
// A form with less than three fields with no autocomplete type(s) should |
// not be extracted. |
- {"<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ {"<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='name' id='firstname'/>" |
"</FORM>", |
false, true, false}, |
// A form with less than three fields with at least one autocomplete type |
// should be extracted. |
- {"<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ {"<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='name' id='firstname' autocomplete='given-name'/>" |
"</FORM>", |
true, true, false}, |
// A form with three or more fields should be extracted. |
- {"<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ {"<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='text' id='firstname'/>" |
" <INPUT type='text' id='lastname'/>" |
" <INPUT type='text' id='email'/>" |
@@ -4478,12 +4507,12 @@ TEST_F(FormAutofillTest, FormCache_ExtractNewForms) { |
"<INPUT type='submit' value='Send'/>", |
false, false, false}, |
// A form with one field which is password should not be extracted. |
- {"<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ {"<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='password' id='pw'/>" |
"</FORM>", |
false, true, false}, |
// A form with two fields which are passwords should be extracted. |
- {"<FORM name='TestForm' action='http://buh.com' method='post'>" |
+ {"<FORM name='TestForm' action='http://abc.com' method='post'>" |
" <INPUT type='password' id='pw'/>" |
" <INPUT type='password' id='new_pw'/>" |
"</FORM>", |