Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(401)

Unified Diff: components/password_manager/core/browser/password_manager_unittest.cc

Issue 1817483002: [Password Manager] Presave the form with generated password till successful login (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 8cb257c6659c19c298fe301e46b1c88a6444c35e..5e41e89f3e9fb5301aa5b15113e1cf053b5cb151 100644
--- a/components/password_manager/core/browser/password_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -1266,6 +1266,73 @@ TEST_F(PasswordManagerTest, PasswordGenerationUsernameChanged) {
EXPECT_EQ(form.new_password_value, form_to_save.password_value);
}
+TEST_F(PasswordManagerTest, PasswordGenerationPresavePassword) {
+ std::vector<PasswordForm> observed;
+ PasswordForm form(MakeFormWithOnlyNewPasswordField());
+ observed.push_back(form);
+ EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage())
+ .WillRepeatedly(Return(true));
+ EXPECT_CALL(*store_, GetLogins(_, _))
+ .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms()));
+ manager()->OnPasswordFormsParsed(&driver_, observed);
+ manager()->OnPasswordFormsRendered(&driver_, observed, true);
+
+ // The user accepts a generated password.
+ form.password_value = base::ASCIIToUTF16("password");
+ EXPECT_CALL(*store_, AddLogin(form)).WillOnce(Return());
+ manager()->OnPresaveGeneratedPassword(form);
+ manager()->SetHasGeneratedPasswordForForm(&driver_, form, true);
+
+ // The user updates the generated password.
+ PasswordForm updated_form(form);
+ updated_form.password_value = base::ASCIIToUTF16("password_12345");
+ EXPECT_CALL(*store_, UpdateLoginWithPrimaryKey(updated_form, form))
+ .WillOnce(Return());
+ manager()->OnUpdatePresavedPassword(updated_form);
+
+ // The user removes the generated password.
+ EXPECT_CALL(*store_, RemoveLogin(updated_form)).WillOnce(Return());
+ manager()->SetHasGeneratedPasswordForForm(&driver_, updated_form, false);
+}
+
+TEST_F(PasswordManagerTest, PasswordGenerationPresavePasswordAndLogin) {
+ EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage())
+ .WillRepeatedly(Return(true));
+ const bool kFalseTrue[] = {false, true};
+ for (bool foundMatchedLoginsInStore : kFalseTrue) {
+ SCOPED_TRACE(testing::Message("foundMatchedLoginsInStore = ")
+ << foundMatchedLoginsInStore);
+ std::vector<PasswordForm> observed;
+ PasswordForm form(MakeFormWithOnlyNewPasswordField());
+ observed.push_back(form);
+ if (foundMatchedLoginsInStore) {
+ EXPECT_CALL(*store_, GetLogins(_, _))
+ .WillRepeatedly(WithArg<1>(InvokeConsumer(form)));
+ EXPECT_CALL(driver_, FillPasswordForm(_)).Times(2);
+ EXPECT_CALL(client_, NotifySuccessfulLoginWithExistingPassword(_))
+ .Times(1);
+ } else {
+ EXPECT_CALL(*store_, GetLogins(_, _))
+ .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms()));
+ }
+ EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_, _)).Times(0);
+ EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()).Times(1);
+ manager()->OnPasswordFormsParsed(&driver_, observed);
+ manager()->OnPasswordFormsRendered(&driver_, observed, true);
+
+ // The user accepts generated password and makes successful login.
+ EXPECT_CALL(*store_, AddLogin(form)).WillOnce(Return());
+ EXPECT_CALL(*store_, UpdateLoginWithPrimaryKey(_, form)).WillOnce(Return());
+ manager()->OnPresaveGeneratedPassword(form);
+ manager()->SetHasGeneratedPasswordForForm(&driver_, form, true);
+
+ OnPasswordFormSubmitted(form);
+ observed.clear();
+ manager()->OnPasswordFormsParsed(&driver_, observed);
+ manager()->OnPasswordFormsRendered(&driver_, observed, true);
+ }
+}
+
TEST_F(PasswordManagerTest, ForceSavingPasswords) {
// Add the enable-password-force-saving feature.
base::FeatureList::ClearInstanceForTesting();

Powered by Google App Engine
This is Rietveld 408576698