Index: chrome/renderer/autofill/password_generation_agent_browsertest.cc |
diff --git a/chrome/renderer/autofill/password_generation_agent_browsertest.cc b/chrome/renderer/autofill/password_generation_agent_browsertest.cc |
index 410b75b8ba8675c49412455c0a1286e1ade25051..333d34c5c354a6fb7835c1ade5a0c8023a6a955e 100644 |
--- a/chrome/renderer/autofill/password_generation_agent_browsertest.cc |
+++ b/chrome/renderer/autofill/password_generation_agent_browsertest.cc |
@@ -607,4 +607,37 @@ TEST_F(PasswordGenerationAgentTest, ManualGenerationChangeFocusTest) { |
ExpectGenerationAvailable("second_password", false); |
} |
+TEST_F(PasswordGenerationAgentTest, PresavingGeneratedPassword) { |
+ const char* const kForms[] = {kAccountCreationFormHTML, |
+ kAccountCreationNoForm}; |
+ for (const char* const form : kForms) { |
+ SCOPED_TRACE(testing::Message("form: ") << form); |
+ LoadHTMLWithUserGesture(form); |
+ // To be able to work with input elements outside <form>'s, use manual |
+ // generation. |
+ ShowGenerationPopUpManually("first_password"); |
+ ExpectGenerationAvailable("first_password", true); |
+ |
+ base::string16 password = base::ASCIIToUTF16("random_password"); |
+ AutofillMsg_GeneratedPasswordAccepted msg(0, password); |
+ password_generation_->OnMessageReceived(msg); |
+ EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching( |
+ AutofillHostMsg_PresaveGeneratedPassword::ID)); |
+ render_thread_->sink().ClearMessages(); |
+ |
+ FocusField("first_password"); |
+ SimulateUserTypingASCIICharacter('a', true); |
+ EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching( |
+ AutofillHostMsg_UpdatePresavedPassword::ID)); |
+ render_thread_->sink().ClearMessages(); |
+ |
+ for (size_t i = 0; i < password.length(); ++i) |
+ SimulateUserTypingASCIICharacter(ui::VKEY_BACK, false); |
+ SimulateUserTypingASCIICharacter(ui::VKEY_BACK, true); |
+ EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching( |
+ AutofillHostMsg_PasswordNoLongerGenerated::ID)); |
+ render_thread_->sink().ClearMessages(); |
+ } |
+} |
+ |
} // namespace autofill |