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 419545d58668d7f6515f5c562b9e1d987d8b25ce..6fcef53cde7c07dc0171239c590e467da4fbfa1b 100644 |
--- a/chrome/renderer/autofill/form_autofill_browsertest.cc |
+++ b/chrome/renderer/autofill/form_autofill_browsertest.cc |
@@ -2837,6 +2837,170 @@ TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOne) { |
EXPECT_EQ(0, firstname.selectionEnd()); |
} |
+TEST_F(FormAutofillTest, ClearPreviewedPasswordWithPasswordAutofilled) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
+ " <INPUT type=\"text\" id=\"username\"/>" |
+ " <INPUT type=\"password\" id=\"password\" value=\"s\"/>" |
+ " <INPUT type=\"submit\" value=\"Send\"/>" |
+ "</FORM>"); |
+ |
+ WebFrame* web_frame = GetMainFrame(); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
+ |
+ // Set the auto-filled attribute. |
+ WebInputElement username = |
+ web_frame->document().getElementById("username").to<WebInputElement>(); |
+ username.setAutofilled(true); |
+ WebInputElement password = |
+ web_frame->document().getElementById("password").to<WebInputElement>(); |
+ password.setAutofilled(true); |
+ |
+ username.setSuggestedValue(ASCIIToUTF16("Wyatt")); |
+ password.setSuggestedValue(ASCIIToUTF16("secret")); |
+ |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(username, REQUIRE_NONE, false, |
+ true)); |
+ |
+ EXPECT_TRUE(username.value().isEmpty()); |
+ EXPECT_TRUE(username.suggestedValue().isEmpty()); |
+ EXPECT_FALSE(username.isAutofilled()); |
+ |
+ EXPECT_EQ(ASCIIToUTF16("s"), password.value()); |
+ EXPECT_TRUE(password.suggestedValue().isEmpty()); |
+ EXPECT_TRUE(password.isAutofilled()); |
+} |
+ |
+TEST_F(FormAutofillTest, ClearPreviewedPasswordWithUserNameAutofilled) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
+ " <INPUT type=\"text\" id=\"username\" value=\"W\"/>" |
+ " <INPUT type=\"password\" id=\"password\"/>" |
+ " <INPUT type=\"submit\" value=\"Send\"/>" |
+ "</FORM>"); |
+ |
+ WebFrame* web_frame = GetMainFrame(); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
+ |
+ WebInputElement username = |
+ web_frame->document().getElementById("username").to<WebInputElement>(); |
+ username.setAutofilled(true); |
+ WebInputElement password = |
+ web_frame->document().getElementById("password").to<WebInputElement>(); |
+ password.setAutofilled(true); |
+ |
+ username.setSuggestedValue(ASCIIToUTF16("Wyatt")); |
+ password.setSuggestedValue(ASCIIToUTF16("secret")); |
+ |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(username, REQUIRE_NONE, true, |
+ false)); |
+ |
+ EXPECT_EQ(ASCIIToUTF16("W"), username.value()); |
+ EXPECT_TRUE(username.suggestedValue().isEmpty()); |
+ EXPECT_TRUE(username.isAutofilled()); |
+ |
+ EXPECT_TRUE(password.value().isEmpty()); |
+ EXPECT_TRUE(password.suggestedValue().isEmpty()); |
+ EXPECT_FALSE(password.isAutofilled()); |
+} |
+ |
+TEST_F(FormAutofillTest, |
+ ClearPreviewedPasswordWithAutofilledUserNameAndPassword) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
+ " <INPUT type=\"text\" id=\"username\" value=\"W\"/>" |
+ " <INPUT type=\"password\" id=\"password\" value=\"s\"/>" |
+ " <INPUT type=\"submit\" value=\"Send\"/>" |
+ "</FORM>"); |
+ |
+ WebFrame* web_frame = GetMainFrame(); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
+ |
+ WebInputElement username = |
+ web_frame->document().getElementById("username").to<WebInputElement>(); |
+ username.setAutofilled(true); |
+ WebInputElement password = |
+ web_frame->document().getElementById("password").to<WebInputElement>(); |
+ password.setAutofilled(true); |
+ |
+ username.setSuggestedValue(ASCIIToUTF16("Wyatt")); |
+ password.setSuggestedValue(ASCIIToUTF16("secret")); |
+ |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(username, REQUIRE_NONE, true, |
+ true)); |
+ |
+ EXPECT_EQ(ASCIIToUTF16("W"), username.value()); |
+ EXPECT_TRUE(username.suggestedValue().isEmpty()); |
+ EXPECT_TRUE(username.isAutofilled()); |
+ |
+ EXPECT_EQ(ASCIIToUTF16("s"), password.value()); |
+ EXPECT_TRUE(password.suggestedValue().isEmpty()); |
+ EXPECT_TRUE(password.isAutofilled()); |
+} |
+ |
+TEST_F(FormAutofillTest, |
+ ClearPreviewedPasswordWithNotAutofilledUserNameAndPassword) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
+ " <INPUT type=\"text\" id=\"username\"/>" |
+ " <INPUT type=\"password\" id=\"password\"/>" |
+ " <INPUT type=\"submit\" value=\"Send\"/>" |
+ "</FORM>"); |
+ |
+ WebFrame* web_frame = GetMainFrame(); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
+ |
+ // Set the auto-filled attribute. |
+ WebInputElement username = |
+ web_frame->document().getElementById("username").to<WebInputElement>(); |
+ username.setAutofilled(true); |
+ WebInputElement password = |
+ web_frame->document().getElementById("password").to<WebInputElement>(); |
+ password.setAutofilled(true); |
+ |
+ username.setSuggestedValue(ASCIIToUTF16("Wyatt")); |
+ password.setSuggestedValue(ASCIIToUTF16("secret")); |
+ |
+ // Clear the previewed fields. |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(username, REQUIRE_NONE, false, |
+ false)); |
+ |
+ EXPECT_TRUE(username.value().isEmpty()); |
+ EXPECT_TRUE(username.suggestedValue().isEmpty()); |
+ EXPECT_FALSE(username.isAutofilled()); |
+ |
+ EXPECT_TRUE(password.value().isEmpty()); |
+ EXPECT_TRUE(password.suggestedValue().isEmpty()); |
+ EXPECT_FALSE(password.isAutofilled()); |
+} |
+ |
+TEST_F(FormAutofillTest, |
+ ClearPreviewedPasswordWithEmptyUserNameSuggestion) { |
+ LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
+ " <INPUT type=\"text\" id=\"username\"/>" |
+ " <INPUT type=\"password\" id=\"password\"/>" |
+ " <INPUT type=\"submit\" value=\"Send\"/>" |
+ "</FORM>"); |
+ |
+ WebFrame* web_frame = GetMainFrame(); |
+ ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
+ |
+ WebInputElement username = |
+ web_frame->document().getElementById("username").to<WebInputElement>(); |
+ username.setAutofilled(true); |
+ WebInputElement password = |
+ web_frame->document().getElementById("password").to<WebInputElement>(); |
+ password.setAutofilled(true); |
+ |
+ username.setSuggestedValue(base::string16()); |
+ |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(username, REQUIRE_NONE, false, |
+ false)); |
+ EXPECT_TRUE(username.value().isEmpty()); |
+ EXPECT_TRUE(username.suggestedValue().isEmpty()); |
+ EXPECT_TRUE(username.isAutofilled()); |
+ |
+ EXPECT_TRUE(password.value().isEmpty()); |
+ EXPECT_TRUE(password.suggestedValue().isEmpty()); |
+ EXPECT_TRUE(password.isAutofilled()); |
+} |
+ |
TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) { |
LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
" <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" |
@@ -2879,7 +3043,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) { |
phone.setSuggestedValue(ASCIIToUTF16("650-777-9999")); |
// Clear the previewed fields. |
- EXPECT_TRUE(ClearPreviewedFormWithElement(lastname, false)); |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(lastname, REQUIRE_AUTOCOMPLETE, |
+ false, false)); |
// Fields with empty suggestions suggestions are not modified. |
EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.value()); |
@@ -2949,7 +3114,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) { |
phone.setSuggestedValue(ASCIIToUTF16("650-777-9999")); |
// Clear the previewed fields. |
- EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, false)); |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, REQUIRE_AUTOCOMPLETE, |
+ false, false)); |
// Fields with non-empty values are restored. |
EXPECT_EQ(ASCIIToUTF16("W"), firstname.value()); |
@@ -3016,7 +3182,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) { |
phone.setSuggestedValue(ASCIIToUTF16("650-777-9999")); |
// Clear the previewed fields. |
- EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, true)); |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, REQUIRE_AUTOCOMPLETE, |
+ true, false)); |
// Fields with non-empty values are restored. |
EXPECT_EQ(ASCIIToUTF16("W"), firstname.value()); |