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 e0a1be95153e1194e094d5044ca7a43d4472c821..c8e3cf09669213b2d2696a247760abaf25faa447 100644 |
--- a/chrome/renderer/autofill/form_autofill_browsertest.cc |
+++ b/chrome/renderer/autofill/form_autofill_browsertest.cc |
@@ -3000,6 +3000,165 @@ 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, 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, 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, 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, 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, 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\"/>" |
@@ -3042,7 +3201,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) { |
phone.setSuggestedValue(ASCIIToUTF16("650-777-9999")); |
// Clear the previewed fields. |
- EXPECT_TRUE(ClearPreviewedFormWithElement(lastname, false)); |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(lastname, false, false)); |
// Fields with empty suggestions suggestions are not modified. |
EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.value()); |
@@ -3112,7 +3271,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) { |
phone.setSuggestedValue(ASCIIToUTF16("650-777-9999")); |
// Clear the previewed fields. |
- EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, false)); |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, false, false)); |
// Fields with non-empty values are restored. |
EXPECT_EQ(ASCIIToUTF16("W"), firstname.value()); |
@@ -3179,7 +3338,7 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) { |
phone.setSuggestedValue(ASCIIToUTF16("650-777-9999")); |
// Clear the previewed fields. |
- EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, true)); |
+ EXPECT_TRUE(ClearPreviewedFormWithElement(firstname, true, false)); |
// Fields with non-empty values are restored. |
EXPECT_EQ(ASCIIToUTF16("W"), firstname.value()); |