| 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 f2329995b2fa4a0818f17d8d222be4840236c0dc..7da6df8b3ae891e09f790ad771dc450a6759ad6b 100644
|
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| @@ -144,6 +144,23 @@ MATCHER_P2(CheckUploadedGenerationTypesAndSignature,
|
| return true;
|
| }
|
|
|
| +MATCHER_P2(CheckUploadedFormClassifierVote,
|
| + found_generation_element,
|
| + generation_element,
|
| + "Wrong form classifier votes") {
|
| + for (const autofill::AutofillField* field : arg) {
|
| + if (found_generation_element && field->name == generation_element) {
|
| + EXPECT_EQ(field->form_classifier_outcome(),
|
| + autofill::AutofillUploadContents::Field::GENERATION_ELEMENT);
|
| + } else {
|
| + EXPECT_EQ(
|
| + field->form_classifier_outcome(),
|
| + autofill::AutofillUploadContents::Field::NON_GENERATION_ELEMENT);
|
| + }
|
| + }
|
| + return true;
|
| +}
|
| +
|
| void ClearVector(ScopedVector<PasswordForm>* results) {
|
| results->clear();
|
| }
|
| @@ -2957,6 +2974,46 @@ TEST_F(PasswordFormManagerTest, GeneratedVoteUpload) {
|
| GeneratedVoteUploadTest(true, true, false);
|
| }
|
|
|
| +TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) {
|
| + const bool kFalseTrue[] = {false, true};
|
| + for (bool found_generation_element : kFalseTrue) {
|
| + SCOPED_TRACE(testing::Message() << "found_generation_element="
|
| + << found_generation_element);
|
| + PasswordForm form(*observed_form());
|
| + form.form_data = saved_match()->form_data;
|
| +
|
| + // Create submitted form.
|
| + PasswordForm submitted_form(form);
|
| + submitted_form.preferred = true;
|
| + submitted_form.username_value = saved_match()->username_value;
|
| + submitted_form.password_value = saved_match()->password_value;
|
| +
|
| + PasswordFormManager form_manager(password_manager(), client(),
|
| + client()->driver(), form, false);
|
| + base::string16 generation_element = form.password_element;
|
| + if (found_generation_element)
|
| + form_manager.SaveGenerationFieldDetectedByClassifier(generation_element);
|
| + else
|
| + form_manager.SaveGenerationFieldDetectedByClassifier(base::string16());
|
| +
|
| + ScopedVector<PasswordForm> result;
|
| + form_manager.SimulateFetchMatchingLoginsFromPasswordStore();
|
| + form_manager.OnGetPasswordStoreResults(std::move(result));
|
| +
|
| + autofill::FormStructure form_structure(submitted_form.form_data);
|
| +
|
| + EXPECT_CALL(
|
| + *client()->mock_driver()->mock_autofill_download_manager(),
|
| + StartUploadRequest(CheckUploadedFormClassifierVote(
|
| + found_generation_element, generation_element),
|
| + false, _, _, true));
|
| +
|
| + form_manager.ProvisionallySave(
|
| + submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
|
| + form_manager.Save();
|
| + }
|
| +}
|
| +
|
| TEST_F(PasswordFormManagerTest, TestSavingAPIFormsWithSamePassword) {
|
| // Turn |observed_form| and |saved_match| to API created forms.
|
| observed_form()->username_element.clear();
|
|
|