diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-01 23:09:49 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-01 23:09:49 +0000 |
commit | c600cc146990b110ec7a760658e4a4cb59d802e3 (patch) | |
tree | 1ca7f3f813dbd9d4e10597cb8925e20d00e5c8de /chrome/renderer | |
parent | cd6cd476f3e0d0333af92a7e4f2370625d2d467c (diff) | |
download | chromium_src-c600cc146990b110ec7a760658e4a4cb59d802e3.zip chromium_src-c600cc146990b110ec7a760658e4a4cb59d802e3.tar.gz chromium_src-c600cc146990b110ec7a760658e4a4cb59d802e3.tar.bz2 |
AutoFill: Don't auto-fill disabled fields.
BUG=45142
TEST=FormManagerTest.FillForm
Review URL: http://codereview.chromium.org/2453004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48672 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/form_manager.cc | 4 | ||||
-rw-r--r-- | chrome/renderer/form_manager_unittest.cc | 25 |
2 files changed, 23 insertions, 6 deletions
diff --git a/chrome/renderer/form_manager.cc b/chrome/renderer/form_manager.cc index 708a62e..9f2b785 100644 --- a/chrome/renderer/form_manager.cc +++ b/chrome/renderer/form_manager.cc @@ -684,6 +684,10 @@ void FormManager::FillFormField(WebKit::WebFormControlElement* field, if (field->formControlType() == WebString::fromUTF8("text")) { WebInputElement input_element = field->to<WebInputElement>(); + // Don't auto-fill a disabled field. + if (!input_element.isEnabledFormControl()) + return; + // Don't auto-fill a field with autocomplete=off. if (!input_element.autoComplete()) return; diff --git a/chrome/renderer/form_manager_unittest.cc b/chrome/renderer/form_manager_unittest.cc index 684c410..e267aff 100644 --- a/chrome/renderer/form_manager_unittest.cc +++ b/chrome/renderer/form_manager_unittest.cc @@ -341,6 +341,7 @@ TEST_F(FormManagerTest, FillForm) { " <INPUT type=\"hidden\" id=\"imhidden\"/>" " <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>"); @@ -368,7 +369,7 @@ TEST_F(FormManagerTest, FillForm) { EXPECT_EQ(GURL("http://buh.com"), form.action); const std::vector<FormField>& fields = form.fields; - ASSERT_EQ(6U, fields.size()); + ASSERT_EQ(7U, fields.size()); EXPECT_EQ(FormField(string16(), ASCIIToUTF16("firstname"), string16(), @@ -400,11 +401,17 @@ TEST_F(FormManagerTest, FillForm) { 20), fields[4]); EXPECT_EQ(FormField(string16(), + ASCIIToUTF16("notenabled"), + string16(), + ASCIIToUTF16("text"), + 20), + fields[5]); + EXPECT_EQ(FormField(string16(), ASCIIToUTF16("reply-send"), ASCIIToUTF16("Send"), ASCIIToUTF16("submit"), 0), - fields[5]); + fields[6]); // Fill the form. form.fields[0].set_value(ASCIIToUTF16("Wyatt")); @@ -412,9 +419,10 @@ TEST_F(FormManagerTest, FillForm) { form.fields[2].set_value(ASCIIToUTF16("Alpha")); form.fields[3].set_value(ASCIIToUTF16("Beta")); form.fields[4].set_value(ASCIIToUTF16("Gamma")); + form.fields[5].set_value(ASCIIToUTF16("Delta")); EXPECT_TRUE(form_manager.FillForm(form)); - // Verify the previewed elements. + // Verify the filled elements. WebDocument document = web_frame->document(); WebInputElement firstname = document.getElementById("firstname").to<WebInputElement>(); @@ -426,20 +434,25 @@ TEST_F(FormManagerTest, FillForm) { document.getElementById("lastname").to<WebInputElement>(); EXPECT_EQ(ASCIIToUTF16("Earp"), lastname.value()); - // Hidden fields are not previewed. + // Hidden fields are not filled. WebInputElement imhidden = document.getElementById("imhidden").to<WebInputElement>(); EXPECT_TRUE(imhidden.value().isEmpty()); - // Non-empty fields are not previewed. + // Non-empty fields are not filled. WebInputElement notempty = document.getElementById("notempty").to<WebInputElement>(); EXPECT_EQ(ASCIIToUTF16("Hi"), notempty.value()); - // autocomplete=off fields are not previewed. + // autocomplete=off fields are not filled. WebInputElement noautocomplete = document.getElementById("noautocomplete").to<WebInputElement>(); EXPECT_TRUE(noautocomplete.value().isEmpty()); + + // Disabled fields are not filled. + WebInputElement notenabled = + document.getElementById("notenabled").to<WebInputElement>(); + EXPECT_TRUE(notenabled.value().isEmpty()); } TEST_F(FormManagerTest, Reset) { |