Chromium Code Reviews| 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 0957eab4b9ccde17b3e174b9d261082f2e77d618..5e17200cbeedd6bdf9aadcf9b84f10fc227355be 100644 |
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc |
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc |
| @@ -62,6 +62,9 @@ namespace password_manager { |
| namespace { |
| +// Enum that describes what button the user pressed on the save prompt. |
| +enum SavePromptInteraction { SAVE, NEVER, NO_INTERACTION }; |
| + |
| class MockFormSaver : public StubFormSaver { |
| public: |
| MockFormSaver() = default; |
| @@ -514,7 +517,7 @@ class PasswordFormManagerTest : public testing::Test { |
| form_manager.Update(*saved_match()); |
| break; |
| case autofill::PROBABLY_NEW_PASSWORD: |
| - form_manager.OnNoInteractionOnUpdate(); |
| + form_manager.OnNoInteraction(true /* it is an update */); |
| break; |
| case autofill::NOT_NEW_PASSWORD: |
| form_manager.OnNopeUpdateClicked(); |
| @@ -552,13 +555,17 @@ class PasswordFormManagerTest : public testing::Test { |
| // The user types username and generates password on SignUp or change password |
| // form. The password generation might be triggered automatically or manually. |
| - // This function checks that correct vote is uploaded on server. |
| + // This function checks that correct vote is uploaded on server. The vote must |
| + // be uploaded regardless of the user's interaction with the prompt. |
| void GeneratedVoteUploadTest(bool is_manual_generation, |
| bool is_change_password_form, |
| - bool has_generated_password) { |
| + bool has_generated_password, |
| + SavePromptInteraction interaction) { |
| SCOPED_TRACE(testing::Message() |
| << "is_manual_generation=" << is_manual_generation |
| - << " is_change_password_form=" << is_change_password_form); |
| + << " is_change_password_form=" << is_change_password_form |
| + << " has_generated_password=" << has_generated_password |
| + << " interaction=" << interaction); |
| PasswordForm form(*observed_form()); |
| form.form_data = saved_match()->form_data; |
| @@ -593,8 +600,11 @@ class PasswordFormManagerTest : public testing::Test { |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| autofill::ServerFieldTypeSet expected_available_field_types; |
| - expected_available_field_types.insert(autofill::USERNAME); |
| - expected_available_field_types.insert(autofill::PASSWORD); |
| + // Don't send autofill votes if the user didn't press "Save" button. |
| + if (interaction == SAVE) { |
| + expected_available_field_types.insert(autofill::USERNAME); |
| + expected_available_field_types.insert(autofill::PASSWORD); |
| + } |
| form_manager.set_is_manual_generation(is_manual_generation); |
| base::string16 generation_element = is_change_password_form |
| @@ -625,7 +635,19 @@ class PasswordFormManagerTest : public testing::Test { |
| form_manager.ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + switch (interaction) { |
| + case SAVE: |
| + form_manager.Save(); |
| + break; |
| + case NEVER: |
| + form_manager.OnNeverClicked(); |
| + break; |
| + case NO_INTERACTION: |
| + form_manager.OnNoInteraction(false /* not an update prompt*/); |
| + break; |
| + default: |
|
vasilii
2016/12/08 16:58:14
I think if you remove "default" then you'll get a
kolos1
2016/12/09 12:16:08
Good point. Fixed.
|
| + NOTREACHED(); |
| + } |
| } |
| PasswordForm* observed_form() { return &observed_form_; } |
| @@ -2345,7 +2367,6 @@ TEST_F(PasswordFormManagerTest, TestNotUpdateWhenOnlyPSLMatched) { |
| client()->driver(), *observed_form(), |
| base::MakeUnique<MockFormSaver>(), &fetcher); |
| fetcher.SetNonFederated({psl_saved_match()}, 0u); |
| - |
| // User submits a credentials with an old username and a new password. |
| PasswordForm credentials(*observed_form()); |
| credentials.username_value = saved_match()->username_value; |
| @@ -2546,17 +2567,21 @@ TEST_F(PasswordFormManagerTest, |
| form_manager.Update(*saved_match()); |
| } |
| +// Checks uploading a vote about the usage of the password generation popup. |
| TEST_F(PasswordFormManagerTest, GeneratedVoteUpload) { |
| - // Automatic generation, sign-up form. |
| - GeneratedVoteUploadTest(false, false, true); |
| - // Automatic generation, change password form. |
| - GeneratedVoteUploadTest(false, true, true); |
| - // Manual generation, sign-up form. |
| - GeneratedVoteUploadTest(true, false, true); |
| - // Manual generation, change password form. |
| - GeneratedVoteUploadTest(true, true, true); |
| - // Generation popup was shown, but the user entered its own password. |
| - GeneratedVoteUploadTest(true, true, false); |
| + bool kFalseTrue[] = {false, true}; |
| + SavePromptInteraction kSavePromptInterations[] = {SAVE, NEVER, |
| + NO_INTERACTION}; |
| + 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); |
| + } |
| + } |
| + } |
| + } |
| } |
| TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) { |