| 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..7f89123640333db59904e9935e1695f8da295a33 100644
|
| --- a/chrome/renderer/autofill/password_generation_agent_browsertest.cc
|
| +++ b/chrome/renderer/autofill/password_generation_agent_browsertest.cc
|
| @@ -575,11 +575,13 @@ TEST_F(PasswordGenerationAgentTest, ChangePasswordFormDetectionTest) {
|
| SetNotBlacklistedMessage(password_generation_, kPasswordChangeFormHTML);
|
| ExpectGenerationAvailable("password", false);
|
| ExpectGenerationAvailable("newpassword", false);
|
| + ExpectGenerationAvailable("confirmpassword", false);
|
|
|
| SetAccountCreationFormsDetectedMessage(password_generation_,
|
| GetMainFrame()->document(), 0, 2);
|
| ExpectGenerationAvailable("password", false);
|
| ExpectGenerationAvailable("newpassword", true);
|
| + ExpectGenerationAvailable("confirmpassword", false);
|
| }
|
|
|
| TEST_F(PasswordGenerationAgentTest, ManualGenerationInFormTest) {
|
| @@ -607,4 +609,41 @@ TEST_F(PasswordGenerationAgentTest, ManualGenerationChangeFocusTest) {
|
| ExpectGenerationAvailable("second_password", false);
|
| }
|
|
|
| +TEST_F(PasswordGenerationAgentTest, PresavingGeneratedPassword) {
|
| + const struct {
|
| + const char* form;
|
| + const char* generation_element;
|
| + } kTestCases[] = {{kAccountCreationFormHTML, "first_password"},
|
| + {kAccountCreationNoForm, "first_password"},
|
| + {kPasswordChangeFormHTML, "newpassword"}};
|
| + for (auto& test_case : kTestCases) {
|
| + SCOPED_TRACE(testing::Message("form: ") << test_case.form);
|
| + LoadHTMLWithUserGesture(test_case.form);
|
| + // To be able to work with input elements outside <form>'s, use manual
|
| + // generation.
|
| + ShowGenerationPopUpManually(test_case.generation_element);
|
| + ExpectGenerationAvailable(test_case.generation_element, 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(test_case.generation_element);
|
| + SimulateUserTypingASCIICharacter('a', true);
|
| + EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching(
|
| + AutofillHostMsg_PresaveGeneratedPassword::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
|
|
|