| 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
|
|
|