| Index: components/password_manager/core/browser/password_manager_unittest.cc
|
| diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc
|
| index 0a82fe7e12b73c2b0cb8e201c7dc47fba5ff2dc1..460c1925360f0499cea12c8edfc01ee73f019cae 100644
|
| --- a/components/password_manager/core/browser/password_manager_unittest.cc
|
| +++ b/components/password_manager/core/browser/password_manager_unittest.cc
|
| @@ -798,4 +798,31 @@ TEST_F(PasswordManagerTest,
|
| observed.clear();
|
| }
|
|
|
| +// Create a form with a new_password_element. Submit the form with the empty
|
| +// new password value. It shouldn't overwrite the existing password.
|
| +TEST_F(PasswordManagerTest, DoNotUpdateWithEmptyPassword) {
|
| + std::vector<PasswordForm*> result; // Empty password store.
|
| + EXPECT_CALL(*store_.get(), GetLogins(_, _, _))
|
| + .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return()));
|
| + std::vector<PasswordForm> observed;
|
| + PasswordForm form(MakeSimpleForm());
|
| + form.new_password_element = ASCIIToUTF16("new_password_element");
|
| + form.new_password_value.clear();
|
| + observed.push_back(form);
|
| + manager()->OnPasswordFormsParsed(observed); // The initial load.
|
| + manager()->OnPasswordFormsRendered(observed, true); // The initial layout.
|
| +
|
| + // And the form submit contract is to call ProvisionallySavePassword.
|
| + OnPasswordFormSubmitted(form);
|
| +
|
| + scoped_ptr<PasswordFormManager> form_to_save;
|
| + EXPECT_CALL(client_, PromptUserToSavePasswordPtr(_)).Times(0);
|
| +
|
| + // Now the password manager waits for the login to complete successfully.
|
| + observed.clear();
|
| + manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
|
| + manager()->OnPasswordFormsRendered(observed,
|
| + true); // The post-navigation layout.
|
| +}
|
| +
|
| } // namespace password_manager
|
|
|