Index: chrome/renderer/form_manager_unittest.cc |
diff --git a/chrome/renderer/form_manager_unittest.cc b/chrome/renderer/form_manager_unittest.cc |
index e267aff1ad2aa4def73c749e569dc4e94977b5ef..43444990582d61b28ac699db62e317331a117f79 100644 |
--- a/chrome/renderer/form_manager_unittest.cc |
+++ b/chrome/renderer/form_manager_unittest.cc |
@@ -258,7 +258,7 @@ TEST_F(FormManagerTest, GetFormsElementsEnabled) { |
form_manager.ExtractForms(web_frame); |
std::vector<FormData> forms; |
- form_manager.GetForms(FormManager::REQUIRE_ELEMENTS_ENABLED, &forms); |
+ form_manager.GetForms(FormManager::REQUIRE_ENABLED, &forms); |
ASSERT_EQ(1U, forms.size()); |
const FormData& form = forms[0]; |
@@ -426,35 +426,164 @@ TEST_F(FormManagerTest, FillForm) { |
WebDocument document = web_frame->document(); |
WebInputElement firstname = |
document.getElementById("firstname").to<WebInputElement>(); |
- // TODO(jhawkins): Check firstname.isAutofilled() once support has been added |
- // in WebKit. |
+ EXPECT_TRUE(firstname.isAutofilled()); |
EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.value()); |
WebInputElement lastname = |
document.getElementById("lastname").to<WebInputElement>(); |
+ EXPECT_TRUE(lastname.isAutofilled()); |
EXPECT_EQ(ASCIIToUTF16("Earp"), lastname.value()); |
// Hidden fields are not filled. |
WebInputElement imhidden = |
document.getElementById("imhidden").to<WebInputElement>(); |
+ EXPECT_FALSE(imhidden.isAutofilled()); |
EXPECT_TRUE(imhidden.value().isEmpty()); |
// Non-empty fields are not filled. |
WebInputElement notempty = |
document.getElementById("notempty").to<WebInputElement>(); |
+ EXPECT_FALSE(notempty.isAutofilled()); |
EXPECT_EQ(ASCIIToUTF16("Hi"), notempty.value()); |
// autocomplete=off fields are not filled. |
WebInputElement noautocomplete = |
document.getElementById("noautocomplete").to<WebInputElement>(); |
+ EXPECT_FALSE(noautocomplete.isAutofilled()); |
EXPECT_TRUE(noautocomplete.value().isEmpty()); |
// Disabled fields are not filled. |
WebInputElement notenabled = |
document.getElementById("notenabled").to<WebInputElement>(); |
+ EXPECT_FALSE(notenabled.isAutofilled()); |
EXPECT_TRUE(notenabled.value().isEmpty()); |
} |
+TEST_F(FormManagerTest, PreviewForm) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
+ " <INPUT type=\"text\" id=\"firstname\"/>" |
+ " <INPUT type=\"text\" id=\"lastname\"/>" |
+ " <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>"); |
+ |
+ WebFrame* web_frame = GetMainFrame(); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
+ |
+ FormManager form_manager; |
+ form_manager.ExtractForms(web_frame); |
+ |
+ // Verify that we have the form. |
+ std::vector<FormData> forms; |
+ form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
+ ASSERT_EQ(1U, forms.size()); |
+ |
+ // Get the input element we want to find. |
+ WebElement element = web_frame->document().getElementById("firstname"); |
+ WebInputElement input_element = element.to<WebInputElement>(); |
+ |
+ // Find the form that contains the input element. |
+ FormData form; |
+ EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
+ input_element, FormManager::REQUIRE_NONE, &form)); |
+ EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
+ EXPECT_EQ(GURL(web_frame->url()), form.origin); |
+ EXPECT_EQ(GURL("http://buh.com"), form.action); |
+ |
+ const std::vector<FormField>& fields = form.fields; |
+ ASSERT_EQ(7U, fields.size()); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("firstname"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ 20), |
+ fields[0]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("lastname"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ 20), |
+ fields[1]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("imhidden"), |
+ string16(), |
+ ASCIIToUTF16("hidden"), |
+ 0), |
+ fields[2]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("notempty"), |
+ ASCIIToUTF16("Hi"), |
+ ASCIIToUTF16("text"), |
+ 20), |
+ fields[3]); |
+ EXPECT_EQ(FormField(string16(), |
+ ASCIIToUTF16("noautocomplete"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ 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[6]); |
+ |
+ // Preview the form. |
+ form.fields[0].set_value(ASCIIToUTF16("Wyatt")); |
+ form.fields[1].set_value(ASCIIToUTF16("Earp")); |
+ 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.PreviewForm(form)); |
+ |
+ // Verify the previewed elements. |
+ WebDocument document = web_frame->document(); |
+ WebInputElement firstname = |
+ document.getElementById("firstname").to<WebInputElement>(); |
+ EXPECT_TRUE(firstname.isAutofilled()); |
+ EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.placeholder()); |
+ |
+ WebInputElement lastname = |
+ document.getElementById("lastname").to<WebInputElement>(); |
+ EXPECT_TRUE(lastname.isAutofilled()); |
+ EXPECT_EQ(ASCIIToUTF16("Earp"), lastname.placeholder()); |
+ |
+ // Hidden fields are not previewed. |
+ WebInputElement imhidden = |
+ document.getElementById("imhidden").to<WebInputElement>(); |
+ EXPECT_FALSE(imhidden.isAutofilled()); |
+ EXPECT_TRUE(imhidden.placeholder().isEmpty()); |
+ |
+ // Non-empty fields are not previewed. |
+ WebInputElement notempty = |
+ document.getElementById("notempty").to<WebInputElement>(); |
+ EXPECT_FALSE(notempty.isAutofilled()); |
+ EXPECT_TRUE(notempty.placeholder().isEmpty()); |
+ |
+ // autocomplete=off fields are not previewed. |
+ WebInputElement noautocomplete = |
+ document.getElementById("noautocomplete").to<WebInputElement>(); |
+ EXPECT_FALSE(noautocomplete.isAutofilled()); |
+ EXPECT_TRUE(noautocomplete.placeholder().isEmpty()); |
+ |
+ // Disabled fields are not previewed. |
+ WebInputElement notenabled = |
+ document.getElementById("notenabled").to<WebInputElement>(); |
+ EXPECT_FALSE(notenabled.isAutofilled()); |
+ EXPECT_TRUE(notenabled.placeholder().isEmpty()); |
+} |
+ |
TEST_F(FormManagerTest, Reset) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
" <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |