| 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 394aef82d6bc3be67504f96ebdcdc1f312884130..88d8994a424f5ce991acf4459c8ecd983fcbbb7b 100644
|
| --- a/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| +++ b/chrome/renderer/autofill/form_autofill_browsertest.cc
|
| @@ -90,6 +90,7 @@ const char kFormHtml[] =
|
| "</FORM>";
|
|
|
| const char kUnownedFormHtml[] =
|
| + "<HEAD><TITLE>enter shipping info</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname'/>"
|
| "<INPUT type='text' id='lastname'/>"
|
| "<INPUT type='hidden' id='imhidden'/>"
|
| @@ -1037,6 +1038,7 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| EXPECT_TRUE(
|
| FindFormAndFieldForFormControlElement(firstname, &form, &field));
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| + EXPECT_FALSE(form.origin.is_empty());
|
| if (!unowned) {
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -1131,6 +1133,7 @@ class FormAutofillTest : public ChromeRenderViewTest {
|
| EXPECT_TRUE(
|
| FindFormAndFieldForFormControlElement(firstname, &form, &field));
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| + EXPECT_FALSE(form.origin.is_empty());
|
| if (!unowned) {
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL("http://buh.com"), form.action);
|
| @@ -1918,6 +1921,7 @@ TEST_F(FormAutofillTest, WebFormElementToFormData) {
|
| &field));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(frame->document().url()), form.origin);
|
| + EXPECT_FALSE(form.origin.is_empty());
|
| EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
|
|
| const std::vector<FormFieldData>& fields = form.fields;
|
| @@ -2030,6 +2034,7 @@ TEST_F(FormAutofillTest, ExtractMultipleForms) {
|
| const FormData& form = forms[0];
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
|
| + EXPECT_FALSE(form.origin.is_empty());
|
| EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
|
|
| const std::vector<FormFieldData>& fields = form.fields;
|
| @@ -2055,6 +2060,7 @@ TEST_F(FormAutofillTest, ExtractMultipleForms) {
|
| const FormData& form2 = forms[1];
|
| EXPECT_EQ(ASCIIToUTF16("TestForm2"), form2.name);
|
| EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
|
| + EXPECT_FALSE(form.origin.is_empty());
|
| EXPECT_EQ(GURL("http://zoo.com"), form2.action);
|
|
|
| const std::vector<FormFieldData>& fields2 = form2.fields;
|
| @@ -2277,6 +2283,7 @@ TEST_F(FormAutofillTest, FindFormForInputElement) {
|
|
|
| TEST_F(FormAutofillTest, FindFormForInputElementForUnownedForm) {
|
| TestFindFormForInputElement(
|
| + "<HEAD><TITLE>delivery recipient</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='John'/>"
|
| "<INPUT type='text' id='lastname' value='Smith'/>"
|
| "<INPUT type='text' id='email' value='john@example.com'"
|
| @@ -2304,6 +2311,7 @@ TEST_F(FormAutofillTest, FindFormForTextAreaElement) {
|
|
|
| TEST_F(FormAutofillTest, FindFormForTextAreaElementForUnownedForm) {
|
| TestFindFormForTextAreaElement(
|
| + "<HEAD><TITLE>delivery address</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='John'/>"
|
| "<INPUT type='text' id='lastname' value='Smith'/>"
|
| "<INPUT type='text' id='email' value='john@example.com'"
|
| @@ -3371,6 +3379,7 @@ TEST_F(FormAutofillTest, FillFormMaxLength) {
|
|
|
| TEST_F(FormAutofillTest, FillFormMaxLengthForUnownedForm) {
|
| TestFillFormMaxLength(
|
| + "<HEAD><TITLE>delivery recipient info</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' maxlength='5'/>"
|
| "<INPUT type='text' id='lastname' maxlength='7'/>"
|
| "<INPUT type='text' id='email' maxlength='9'/>"
|
| @@ -3383,6 +3392,7 @@ TEST_F(FormAutofillTest, FillFormMaxLengthForUnownedForm) {
|
| // maxlength (defined in WebKit.)
|
| TEST_F(FormAutofillTest, FillFormNegativeMaxLength) {
|
| TestFillFormNegativeMaxLength(
|
| + "<HEAD><TITLE>delivery recipient info</TITLE></HEAD>"
|
| "<FORM name='TestForm' action='http://buh.com' method='post'>"
|
| " <INPUT type='text' id='firstname' maxlength='-1'/>"
|
| " <INPUT type='text' id='lastname' maxlength='-10'/>"
|
| @@ -3394,6 +3404,7 @@ TEST_F(FormAutofillTest, FillFormNegativeMaxLength) {
|
|
|
| TEST_F(FormAutofillTest, FillFormNegativeMaxLengthForUnownedForm) {
|
| TestFillFormNegativeMaxLength(
|
| + "<HEAD><TITLE>delivery recipient info</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' maxlength='-1'/>"
|
| "<INPUT type='text' id='lastname' maxlength='-10'/>"
|
| "<INPUT type='text' id='email' maxlength='-13'/>"
|
| @@ -3414,6 +3425,7 @@ TEST_F(FormAutofillTest, FillFormEmptyName) {
|
|
|
| TEST_F(FormAutofillTest, FillFormEmptyNameForUnownedForm) {
|
| TestFillFormEmptyName(
|
| + "<HEAD><TITLE>delivery recipient info</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname'/>"
|
| "<INPUT type='text' id='lastname'/>"
|
| "<INPUT type='text' id='email'/>"
|
| @@ -3440,6 +3452,7 @@ TEST_F(FormAutofillTest, FillFormEmptyFormNames) {
|
|
|
| TEST_F(FormAutofillTest, FillFormEmptyFormNamesForUnownedForm) {
|
| TestFillFormEmptyFormNames(
|
| + "<HEAD><TITLE>enter delivery preferences</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname'/>"
|
| "<INPUT type='text' id='middlename'/>"
|
| "<INPUT type='text' id='lastname'/>"
|
| @@ -3463,7 +3476,6 @@ TEST_F(FormAutofillTest, ThreePartPhone) {
|
| " <input type='submit' name='reply-send' value='Send'>"
|
| "</FORM>");
|
|
|
| -
|
| WebFrame* frame = GetMainFrame();
|
| ASSERT_NE(nullptr, frame);
|
|
|
| @@ -3479,6 +3491,7 @@ TEST_F(FormAutofillTest, ThreePartPhone) {
|
| nullptr));
|
| EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
|
| EXPECT_EQ(GURL(frame->document().url()), form.origin);
|
| + EXPECT_FALSE(form.origin.is_empty());
|
| EXPECT_EQ(GURL("http://cnn.com"), form.action);
|
|
|
| const std::vector<FormFieldData>& fields = form.fields;
|
| @@ -3593,11 +3606,13 @@ TEST_F(FormAutofillTest, FillFormNonEmptyField) {
|
| }
|
|
|
| TEST_F(FormAutofillTest, FillFormNonEmptyFieldForUnownedForm) {
|
| - TestFillFormNonEmptyField("<INPUT type='text' id='firstname'/>"
|
| - "<INPUT type='text' id='lastname'/>"
|
| - "<INPUT type='text' id='email'/>"
|
| - "<INPUT type='submit' value='Send'/>",
|
| - true);
|
| + TestFillFormNonEmptyField(
|
| + "<HEAD><TITLE>delivery recipient info</TITLE></HEAD>"
|
| + "<INPUT type='text' id='firstname'/>"
|
| + "<INPUT type='text' id='lastname'/>"
|
| + "<INPUT type='text' id='email'/>"
|
| + "<INPUT type='submit' value='Send'/>",
|
| + true);
|
| }
|
|
|
| TEST_F(FormAutofillTest, ClearFormWithNode) {
|
| @@ -3622,6 +3637,7 @@ TEST_F(FormAutofillTest, ClearFormWithNode) {
|
|
|
| TEST_F(FormAutofillTest, ClearFormWithNodeForUnownedForm) {
|
| TestClearFormWithNode(
|
| + "<HEAD><TITLE>store checkout</TITLE></HEAD>"
|
| " <!-- Indented on purpose //-->"
|
| " <INPUT type='text' id='firstname' value='Wyatt'/>"
|
| " <INPUT type='text' id='lastname' value='Earp'/>"
|
| @@ -3657,6 +3673,7 @@ TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOne) {
|
|
|
| TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOneForUnownedForm) {
|
| TestClearFormWithNodeContainingSelectOne(
|
| + "<HEAD><TITLE>store checkout</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='Wyatt'/>"
|
| "<INPUT type='text' id='lastname' value='Earp'/>"
|
| "<SELECT id='state' name='state'>"
|
| @@ -3683,6 +3700,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) {
|
|
|
| TEST_F(FormAutofillTest, ClearPreviewedFormWithElementForUnownedForm) {
|
| TestClearPreviewedFormWithElement(
|
| + "<HEAD><TITLE>store checkout</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='Wyatt'/>"
|
| "<INPUT type='text' id='lastname'/>"
|
| "<INPUT type='text' id='email'/>"
|
| @@ -3706,6 +3724,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) {
|
| TEST_F(FormAutofillTest,
|
| ClearPreviewedFormWithNonEmptyInitiatingNodeForUnownedForm) {
|
| TestClearPreviewedFormWithNonEmptyInitiatingNode(
|
| + "<HEAD><TITLE>shipping details</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='W'/>"
|
| "<INPUT type='text' id='lastname'/>"
|
| "<INPUT type='text' id='email'/>"
|
| @@ -3729,6 +3748,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) {
|
| TEST_F(FormAutofillTest,
|
| ClearPreviewedFormWithAutofilledInitiatingNodeForUnownedForm) {
|
| TestClearPreviewedFormWithAutofilledInitiatingNode(
|
| + "<HEAD><TITLE>shipping details</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='W'/>"
|
| "<INPUT type='text' id='lastname'/>"
|
| "<INPUT type='text' id='email'/>"
|
| @@ -3751,6 +3771,7 @@ TEST_F(FormAutofillTest, ClearOnlyAutofilledFields) {
|
|
|
| TEST_F(FormAutofillTest, ClearOnlyAutofilledFieldsForUnownedForm) {
|
| TestClearOnlyAutofilledFields(
|
| + "<HEAD><TITLE>shipping details</TITLE></HEAD>"
|
| "<INPUT type='text' id='firstname' value='Wyatt'/>"
|
| "<INPUT type='text' id='lastname' value='Earp'/>"
|
| "<INPUT type='email' id='email' value='wyatt@earp.com'/>"
|
| @@ -3913,9 +3934,9 @@ TEST_F(FormAutofillTest,
|
|
|
| const ExtractMask extract_mask =
|
| static_cast<ExtractMask>(EXTRACT_VALUE | EXTRACT_OPTIONS);
|
| - const GURL dummy_origin("http://www.example.com");
|
|
|
| - LoadHTML("<DIV>"
|
| + LoadHTML("<HEAD><TITLE>delivery info</TITLE></HEAD>"
|
| + "<DIV>"
|
| " <FIELDSET>"
|
| " <LABEL for='firstname'>First name:</LABEL>"
|
| " <LABEL for='lastname'>Last name:</LABEL>"
|
| @@ -3938,11 +3959,11 @@ TEST_F(FormAutofillTest,
|
|
|
| FormData form;
|
| EXPECT_TRUE(UnownedFormElementsAndFieldSetsToFormData(
|
| - fieldsets, control_elements, nullptr, dummy_origin, extract_mask, &form,
|
| - nullptr));
|
| + fieldsets, control_elements, nullptr, frame->document(), extract_mask,
|
| + &form, nullptr));
|
|
|
| EXPECT_TRUE(form.name.empty());
|
| - EXPECT_EQ(dummy_origin, form.origin);
|
| + EXPECT_EQ(frame->document().url(), form.origin);
|
| EXPECT_FALSE(form.action.is_valid());
|
|
|
| const std::vector<FormFieldData>& fields = form.fields;
|
| @@ -3975,9 +3996,9 @@ TEST_F(FormAutofillTest,
|
|
|
| const ExtractMask extract_mask =
|
| static_cast<ExtractMask>(EXTRACT_VALUE | EXTRACT_OPTIONS);
|
| - const GURL dummy_origin("http://www.example.com");
|
|
|
| - LoadHTML("<DIV>"
|
| + LoadHTML("<HEAD><TITLE>shipping details</TITLE></HEAD>"
|
| + "<DIV>"
|
| " <FIELDSET>"
|
| " <LABEL for='firstname'>First name:</LABEL>"
|
| " <LABEL for='lastname'>Last name:</LABEL>"
|
| @@ -3998,11 +4019,11 @@ TEST_F(FormAutofillTest,
|
|
|
| FormData form;
|
| EXPECT_TRUE(UnownedFormElementsAndFieldSetsToFormData(
|
| - fieldsets, control_elements, nullptr, dummy_origin, extract_mask, &form,
|
| - nullptr));
|
| + fieldsets, control_elements, nullptr, frame->document(), extract_mask,
|
| + &form, nullptr));
|
|
|
| EXPECT_TRUE(form.name.empty());
|
| - EXPECT_EQ(dummy_origin, form.origin);
|
| + EXPECT_EQ(frame->document().url(), form.origin);
|
| EXPECT_FALSE(form.action.is_valid());
|
|
|
| const std::vector<FormFieldData>& fields = form.fields;
|
| @@ -4034,7 +4055,6 @@ TEST_F(FormAutofillTest, UnownedFormElementsAndFieldSetsToFormDataWithForm) {
|
|
|
| const ExtractMask extract_mask =
|
| static_cast<ExtractMask>(EXTRACT_VALUE | EXTRACT_OPTIONS);
|
| - const GURL dummy_origin("http://www.example.com");
|
|
|
| LoadHTML(kFormHtml);
|
|
|
| @@ -4048,8 +4068,8 @@ TEST_F(FormAutofillTest, UnownedFormElementsAndFieldSetsToFormDataWithForm) {
|
|
|
| FormData form;
|
| EXPECT_FALSE(UnownedFormElementsAndFieldSetsToFormData(
|
| - fieldsets, control_elements, nullptr, dummy_origin, extract_mask, &form,
|
| - nullptr));
|
| + fieldsets, control_elements, nullptr, frame->document(), extract_mask,
|
| + &form, nullptr));
|
| }
|
|
|
| } // namespace autofill
|
|
|