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

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

Issue 2937033002: [Password Generation] Send a boolean flag of whether user changed generated password (Closed)
Patch Set: Changes addressed to vabr@ comments Created 3 years, 6 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_form_manager_unittest.cc
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index 51de9de7105529a7723757c0bb0abcdb03ed202b..225ac0f5fe5a90513ffdf8e16e571b58628c9c83 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -90,6 +90,9 @@ class MockFormSaver : public StubFormSaver {
void(const autofill::PasswordForm& pending,
std::map<base::string16, const PasswordForm*>* best_matches,
const autofill::PasswordForm** preferred_match));
+ MOCK_METHOD1(PresaveGeneratedPassword,
+ void(const autofill::PasswordForm& generated));
+ MOCK_METHOD0(RemovePresavedPassword, void());
// Convenience downcasting method.
static MockFormSaver& Get(PasswordFormManager* form_manager) {
@@ -153,9 +156,10 @@ MATCHER_P3(CheckUploadedAutofillTypesAndSignature,
return true;
}
-MATCHER_P2(CheckUploadedGenerationTypesAndSignature,
+MATCHER_P3(CheckUploadedGenerationTypesAndSignature,
form_signature,
expected_generation_types,
+ generated_password_changed,
"Unexpected generation types or form signature") {
if (form_signature != arg.FormSignatureAsStr()) {
// Unexpected form's signature.
@@ -184,6 +188,12 @@ MATCHER_P2(CheckUploadedGenerationTypesAndSignature,
<< ", but found " << field->generation_type();
return false;
}
+
+ if (field->generation_type() !=
+ autofill::AutofillUploadContents::Field::IGNORED_GENERATION_POPUP) {
+ EXPECT_EQ(generated_password_changed,
+ field->generated_password_changed());
+ }
}
}
return true;
@@ -605,11 +615,13 @@ class PasswordFormManagerTest : public testing::Test {
void GeneratedVoteUploadTest(bool is_manual_generation,
bool is_change_password_form,
bool has_generated_password,
+ bool generated_password_changed,
SavePromptInteraction interaction) {
SCOPED_TRACE(testing::Message()
<< "is_manual_generation=" << is_manual_generation
<< " is_change_password_form=" << is_change_password_form
<< " has_generated_password=" << has_generated_password
+ << " generated_password_changed=" << generated_password_changed
<< " interaction=" << interaction);
PasswordForm form(*observed_form());
form.form_data = saved_match()->form_data;
@@ -656,6 +668,8 @@ class PasswordFormManagerTest : public testing::Test {
form_manager.set_generation_element(generation_element);
form_manager.set_generation_popup_was_shown(true);
form_manager.SetHasGeneratedPassword(has_generated_password);
+ if (has_generated_password)
+ form_manager.set_generated_password_changed(generated_password_changed);
// Figure out expected generation event type.
autofill::AutofillUploadContents::Field::PasswordGenerationType
@@ -673,7 +687,8 @@ class PasswordFormManagerTest : public testing::Test {
*client()->mock_driver()->mock_autofill_download_manager(),
StartUploadRequest(
CheckUploadedGenerationTypesAndSignature(
- form_structure.FormSignatureAsStr(), expected_generation_types),
+ form_structure.FormSignatureAsStr(), expected_generation_types,
+ generated_password_changed),
false, expected_available_field_types, std::string(), true));
form_manager.ProvisionallySave(
@@ -2529,7 +2544,6 @@ TEST_F(PasswordFormManagerTest, TestNotUpdateWhenOnlyPSLMatched) {
TEST_F(PasswordFormManagerTest,
TestSavingOnChangePasswordFormGenerationNoStoredForms) {
fake_form_fetcher()->SetNonFederated(std::vector<const PasswordForm*>(), 0u);
- form_manager()->SetHasGeneratedPassword(true);
// User submits change password form and there is no stored credentials.
PasswordForm credentials = *observed_form();
@@ -2538,6 +2552,7 @@ TEST_F(PasswordFormManagerTest,
credentials.new_password_element = ASCIIToUTF16("NewPasswd");
credentials.new_password_value = ASCIIToUTF16("new_password");
credentials.preferred = true;
+ form_manager()->PresaveGeneratedPassword(credentials);
form_manager()->ProvisionallySave(
credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
@@ -2564,7 +2579,6 @@ TEST_F(PasswordFormManagerTest,
TEST_F(PasswordFormManagerTest, TestUpdatingOnChangePasswordFormGeneration) {
fake_form_fetcher()->SetNonFederated({saved_match()}, 0u);
- form_manager()->SetHasGeneratedPassword(true);
// User submits credentials for the change password form, and old password is
// coincide with password from an existing credentials, so stored credentials
@@ -2575,6 +2589,7 @@ TEST_F(PasswordFormManagerTest, TestUpdatingOnChangePasswordFormGeneration) {
credentials.new_password_element = ASCIIToUTF16("NewPasswd");
credentials.new_password_value = ASCIIToUTF16("new_password");
credentials.preferred = true;
+ form_manager()->PresaveGeneratedPassword(credentials);
form_manager()->ProvisionallySave(
credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
@@ -2600,7 +2615,6 @@ TEST_F(PasswordFormManagerTest, TestUpdatingOnChangePasswordFormGeneration) {
TEST_F(PasswordFormManagerTest,
TestSavingOnChangePasswordFormGenerationNoMatchedForms) {
fake_form_fetcher()->SetNonFederated({saved_match()}, 0u);
- form_manager()->SetHasGeneratedPassword(true);
// User submits credentials for the change password form, and old password is
// not coincide with password from existing credentials, so new credentials
@@ -2612,6 +2626,7 @@ TEST_F(PasswordFormManagerTest,
credentials.new_password_element = ASCIIToUTF16("NewPasswd");
credentials.new_password_value = ASCIIToUTF16("new_password");
credentials.preferred = true;
+ form_manager()->PresaveGeneratedPassword(credentials);
form_manager()->ProvisionallySave(
credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
@@ -2710,15 +2725,42 @@ TEST_F(PasswordFormManagerTest, GeneratedVoteUpload) {
for (bool is_manual_generation : kFalseTrue) {
for (bool is_change_password_form : kFalseTrue) {
for (bool has_generated_password : kFalseTrue) {
- for (SavePromptInteraction interaction : kSavePromptInterations) {
- GeneratedVoteUploadTest(is_manual_generation, is_change_password_form,
- has_generated_password, interaction);
+ for (bool generated_password_changed : kFalseTrue) {
+ for (SavePromptInteraction interaction : kSavePromptInterations) {
+ GeneratedVoteUploadTest(is_manual_generation,
+ is_change_password_form,
+ has_generated_password,
+ generated_password_changed, interaction);
+ }
}
}
}
}
}
+TEST_F(PasswordFormManagerTest, PresaveGeneratedPasswordAndRemoveIt) {
+ PasswordForm credentials = *observed_form();
+
+ // Simulate the user accepted a generated password.
+ EXPECT_CALL(MockFormSaver::Get(form_manager()),
+ PresaveGeneratedPassword(credentials));
+ form_manager()->PresaveGeneratedPassword(credentials);
+ EXPECT_TRUE(form_manager()->has_generated_password());
+ EXPECT_FALSE(form_manager()->generated_password_changed());
+
+ // Simulate the user changed the presaved password.
+ credentials.password_value = ASCIIToUTF16("changed_password");
+ EXPECT_CALL(MockFormSaver::Get(form_manager()),
+ PresaveGeneratedPassword(credentials));
+ form_manager()->PresaveGeneratedPassword(credentials);
+ EXPECT_TRUE(form_manager()->has_generated_password());
+ EXPECT_TRUE(form_manager()->generated_password_changed());
+
+ // Simulate the user removed the presaved password.
+ EXPECT_CALL(MockFormSaver::Get(form_manager()), RemovePresavedPassword());
+ form_manager()->PasswordNoLongerGenerated();
+}
+
TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) {
const bool kFalseTrue[] = {false, true};
for (bool found_generation_element : kFalseTrue) {

Powered by Google App Engine
This is Rietveld 408576698