diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-01 18:28:58 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-01 18:28:58 +0000 |
commit | 1fa7b48bbeb65db6a8865ccb0f432c6cb44fd39c (patch) | |
tree | 200ce5aba779cd617ca610645775901afbaf70ed /chrome/renderer/form_manager_browsertest.cc | |
parent | 2cc800b06bfbdc34b49e25c059ac1da34d63eb61 (diff) | |
download | chromium_src-1fa7b48bbeb65db6a8865ccb0f432c6cb44fd39c.zip chromium_src-1fa7b48bbeb65db6a8865ccb0f432c6cb44fd39c.tar.gz chromium_src-1fa7b48bbeb65db6a8865ccb0f432c6cb44fd39c.tar.bz2 |
AutoFill: Don't send select option values to the browser on page load. Only
send the values when the browser instructs the renderer to send form data for a
specific form to be auto-filled.
BUG=49992
TEST=FormManagerTest.*
Review URL: http://codereview.chromium.org/3588004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61202 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/form_manager_browsertest.cc')
-rw-r--r-- | chrome/renderer/form_manager_browsertest.cc | 134 |
1 files changed, 85 insertions, 49 deletions
diff --git a/chrome/renderer/form_manager_browsertest.cc b/chrome/renderer/form_manager_browsertest.cc index a72b601..0b89e1d 100644 --- a/chrome/renderer/form_manager_browsertest.cc +++ b/chrome/renderer/form_manager_browsertest.cc @@ -53,6 +53,7 @@ TEST_F(FormManagerTest, WebFormElementToFormData) { EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], FormManager::REQUIRE_NONE, true, + false, &form)); EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); EXPECT_EQ(GURL(frame->url()), form.origin); @@ -100,7 +101,7 @@ TEST_F(FormManagerTest, ExtractForms) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -133,11 +134,13 @@ TEST_F(FormManagerTest, ExtractForms) { TEST_F(FormManagerTest, ExtractMultipleForms) { LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" + " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" "</FORM>" "<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">" + " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" - " <INPUT type=\"submit\" name=\"second\" value=\"Submit\"/>" + " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" "</FORM>"); WebFrame* web_frame = GetMainFrame(); @@ -147,7 +150,7 @@ TEST_F(FormManagerTest, ExtractMultipleForms) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(2U, forms.size()); // First form. @@ -157,7 +160,7 @@ TEST_F(FormManagerTest, ExtractMultipleForms) { EXPECT_EQ(GURL("http://cnn.com"), form.action); const std::vector<FormField>& fields = form.fields; - ASSERT_EQ(2U, fields.size()); + ASSERT_EQ(3U, fields.size()); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("firstname"), ASCIIToUTF16("John"), @@ -165,11 +168,17 @@ TEST_F(FormManagerTest, ExtractMultipleForms) { 20), fields[0]); EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("lastname"), + ASCIIToUTF16("Smith"), + ASCIIToUTF16("text"), + 20), + fields[1]); + EXPECT_EQ(FormField(string16(), ASCIIToUTF16("reply-send"), ASCIIToUTF16("Send"), ASCIIToUTF16("submit"), 0), - fields[1]); + fields[2]); // Second form. const FormData& form2 = forms[1]; @@ -178,19 +187,25 @@ TEST_F(FormManagerTest, ExtractMultipleForms) { EXPECT_EQ(GURL("http://zoo.com"), form2.action); const std::vector<FormField>& fields2 = form2.fields; - ASSERT_EQ(2U, fields2.size()); + ASSERT_EQ(3U, fields2.size()); + EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("firstname"), + ASCIIToUTF16("John"), + ASCIIToUTF16("text"), + 20), + fields2[0]); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("lastname"), ASCIIToUTF16("Smith"), ASCIIToUTF16("text"), 20), - fields2[0]); + fields2[1]); EXPECT_EQ(FormField(string16(), - ASCIIToUTF16("second"), - ASCIIToUTF16("Submit"), + ASCIIToUTF16("reply-send"), + ASCIIToUTF16("Send"), ASCIIToUTF16("submit"), 0), - fields2[1]); + fields2[2]); } TEST_F(FormManagerTest, GetFormsAutocomplete) { @@ -198,6 +213,7 @@ TEST_F(FormManagerTest, GetFormsAutocomplete) { LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\"" " autocomplete=off>" " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" + " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" "</FORM>"); @@ -209,18 +225,20 @@ TEST_F(FormManagerTest, GetFormsAutocomplete) { // Verify that we did load the forms. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // autocomplete=off and we're requiring autocomplete, so no forms returned. forms.clear(); - form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); + form_manager.GetFormsInFrame( + web_frame, FormManager::REQUIRE_AUTOCOMPLETE, &forms); ASSERT_EQ(0U, forms.size()); // The firstname element is not auto-completable due to autocomplete=off. LoadHTML("<FORM name=\"TestForm\" action=\"http://abc.com\" method=\"post\">" " <INPUT type=\"text\" id=\"firstname\" value=\"John\"" " autocomplete=off>" + " <INPUT type=\"text\" id=\"middlename\" value=\"Jack\"/>" " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" " <INPUT type=\"submit\" name=\"reply\" value=\"Send\"/>" "</FORM>"); @@ -232,7 +250,8 @@ TEST_F(FormManagerTest, GetFormsAutocomplete) { form_manager.ExtractForms(web_frame); forms.clear(); - form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); + form_manager.GetFormsInFrame( + web_frame, FormManager::REQUIRE_AUTOCOMPLETE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -241,25 +260,32 @@ TEST_F(FormManagerTest, GetFormsAutocomplete) { EXPECT_EQ(GURL("http://abc.com"), form.action); const std::vector<FormField>& fields = form.fields; - ASSERT_EQ(2U, fields.size()); + ASSERT_EQ(3U, fields.size()); + EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("middlename"), + ASCIIToUTF16("Jack"), + ASCIIToUTF16("text"), + 20), + fields[0]); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("lastname"), ASCIIToUTF16("Smith"), ASCIIToUTF16("text"), 20), - fields[0]); + fields[1]); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("reply"), ASCIIToUTF16("Send"), ASCIIToUTF16("submit"), 0), - fields[1]); + fields[2]); } TEST_F(FormManagerTest, GetFormsElementsEnabled) { // The firstname element is not enabled due to disabled being set. LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">" " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\"/>" + " <INPUT type=\"text\" id=\"middlename\" value=\"Jack\"/>" " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" " <INPUT type=\"submit\" name=\"submit\" value=\"Send\"/>" "</FORM>"); @@ -271,7 +297,7 @@ TEST_F(FormManagerTest, GetFormsElementsEnabled) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_ENABLED, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_ENABLED, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -280,19 +306,25 @@ TEST_F(FormManagerTest, GetFormsElementsEnabled) { EXPECT_EQ(GURL("http://xyz.com"), form.action); const std::vector<FormField>& fields = form.fields; - ASSERT_EQ(2U, fields.size()); + ASSERT_EQ(3U, fields.size()); + EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("middlename"), + ASCIIToUTF16("Jack"), + ASCIIToUTF16("text"), + 20), + fields[0]); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("lastname"), ASCIIToUTF16("Smith"), ASCIIToUTF16("text"), 20), - fields[0]); + fields[1]); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("submit"), ASCIIToUTF16("Send"), ASCIIToUTF16("submit"), 0), - fields[1]); + fields[2]); } TEST_F(FormManagerTest, FindForm) { @@ -310,7 +342,7 @@ TEST_F(FormManagerTest, FindForm) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -366,7 +398,7 @@ TEST_F(FormManagerTest, FillForm) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -491,7 +523,7 @@ TEST_F(FormManagerTest, PreviewForm) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -611,14 +643,14 @@ TEST_F(FormManagerTest, Reset) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // There should be no forms after the call to Reset. form_manager.Reset(); forms.clear(); - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(0U, forms.size()); } @@ -638,7 +670,7 @@ TEST_F(FormManagerTest, Labels) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -684,7 +716,7 @@ TEST_F(FormManagerTest, LabelsWithSpans) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -734,7 +766,7 @@ TEST_F(FormManagerTest, InvalidLabels) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -782,7 +814,8 @@ TEST_F(FormManagerTest, OneLabelElementFirstControlElementDisabled) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); + form_manager.GetFormsInFrame( + web_frame, FormManager::REQUIRE_AUTOCOMPLETE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -828,7 +861,7 @@ TEST_F(FormManagerTest, LabelsInferredFromText) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -874,7 +907,7 @@ TEST_F(FormManagerTest, LabelsInferredFromTextHidden) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -917,7 +950,7 @@ TEST_F(FormManagerTest, LabelsInferredFromParagraph) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -974,7 +1007,7 @@ TEST_F(FormManagerTest, LabelsInferredFromTableCell) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -1050,7 +1083,7 @@ TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -1123,7 +1156,7 @@ TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -1169,7 +1202,7 @@ TEST_F(FormManagerTest, LabelsInferredWithSameName) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; @@ -1228,6 +1261,7 @@ TEST_F(FormManagerTest, LabelsInferredWithImageTags) { EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], FormManager::REQUIRE_NONE, true, + false, &form)); EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); EXPECT_EQ(GURL(frame->url()), form.origin); @@ -1288,7 +1322,7 @@ TEST_F(FormManagerTest, FillFormMaxLength) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -1376,7 +1410,7 @@ TEST_F(FormManagerTest, FillFormNegativeMaxLength) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -1466,7 +1500,7 @@ TEST_F(FormManagerTest, FillFormMoreFormDataFields) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // After the field modification, the fields in |form| will look like: @@ -1576,7 +1610,7 @@ TEST_F(FormManagerTest, FillFormFewerFormDataFields) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // After the field modification, the fields in |form| will look like: @@ -1670,7 +1704,7 @@ TEST_F(FormManagerTest, FillFormChangedFormDataFields) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // After the field modification, the fields in |form| will look like: @@ -1746,7 +1780,7 @@ TEST_F(FormManagerTest, FillFormExtraFieldInCache) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // After the field modification, the fields in |form| will look like: @@ -1818,7 +1852,7 @@ TEST_F(FormManagerTest, FillFormEmptyName) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -1910,7 +1944,7 @@ TEST_F(FormManagerTest, FillFormEmptyFormNames) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(2U, forms.size()); // Get the input element we want to find. @@ -2006,6 +2040,7 @@ TEST_F(FormManagerTest, ThreePartPhone) { EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], FormManager::REQUIRE_NONE, true, + false, &form)); EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); EXPECT_EQ(GURL(frame->url()), form.origin); @@ -2073,6 +2108,7 @@ TEST_F(FormManagerTest, SizeFields) { EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], FormManager::REQUIRE_NONE, true, + false, &form)); EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); EXPECT_EQ(GURL(frame->url()), form.origin); @@ -2144,7 +2180,7 @@ TEST_F(FormManagerTest, FillFormNonEmptyField) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Get the input element we want to find. @@ -2237,7 +2273,7 @@ TEST_F(FormManagerTest, ClearFormWithNode) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Set the auto-filled attribute on the firstname element. @@ -2320,7 +2356,7 @@ TEST_F(FormManagerTest, ClearPreviewedFormWithNode) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); // Set the auto-filled attribute. @@ -2371,7 +2407,7 @@ TEST_F(FormManagerTest, FormWithNodeIsAutoFilled) { // Verify that we have the form. std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); WebInputElement firstname = @@ -2402,7 +2438,7 @@ TEST_F(FormManagerTest, LabelsHiddenFields) { form_manager.ExtractForms(web_frame); std::vector<FormData> forms; - form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); + form_manager.GetFormsInFrame(web_frame, FormManager::REQUIRE_NONE, &forms); ASSERT_EQ(1U, forms.size()); const FormData& form = forms[0]; |