| 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 03d149f2bae81e5e164b2ca73e9656975f6a978b..b294ad38ca682431fa2fede85b230a75e3c20295 100644
|
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
|
| @@ -43,6 +43,8 @@
|
| #include "url/gurl.h"
|
| #include "url/origin.h"
|
|
|
| +using autofill::FieldPropertiesFlags;
|
| +using autofill::FieldPropertiesMask;
|
| using autofill::PasswordForm;
|
| using base::ASCIIToUTF16;
|
| using ::testing::_;
|
| @@ -200,6 +202,25 @@ MATCHER_P2(CheckUploadedFormClassifierVote,
|
| return true;
|
| }
|
|
|
| +MATCHER_P(CheckFieldPropertiesMasksUpload,
|
| + expected_field_properties,
|
| + "Wrong field properties flags") {
|
| + for (const autofill::AutofillField* field : arg) {
|
| + autofill::FieldPropertiesMask expected_mask =
|
| + expected_field_properties.find(field->name) !=
|
| + expected_field_properties.end()
|
| + ? FieldPropertiesFlags::USER_TYPED
|
| + : 0;
|
| + if (field->properties_mask != expected_mask) {
|
| + ADD_FAILURE() << "Wrong field properties flags for field " << field->name
|
| + << ": expected mask " << expected_mask << ", but found "
|
| + << field->properties_mask;
|
| + return false;
|
| + }
|
| + }
|
| + return true;
|
| +}
|
| +
|
| void ClearVector(ScopedVector<PasswordForm>* results) {
|
| results->clear();
|
| }
|
| @@ -2858,6 +2879,44 @@ TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) {
|
| }
|
| }
|
|
|
| +TEST_F(PasswordFormManagerTest, FieldPropertiesMasksUpload) {
|
| + 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,
|
| + base::WrapUnique(new NiceMock<MockFormSaver>()));
|
| + ScopedVector<PasswordForm> result;
|
| + form_manager.SimulateFetchMatchingLoginsFromPasswordStore();
|
| + form_manager.OnGetPasswordStoreResults(std::move(result));
|
| +
|
| + DCHECK_EQ(3U, form.form_data.fields.size());
|
| + submitted_form.form_data.fields[1].properties_mask =
|
| + FieldPropertiesFlags::USER_TYPED;
|
| + submitted_form.form_data.fields[2].properties_mask =
|
| + FieldPropertiesFlags::USER_TYPED;
|
| +
|
| + std::map<base::string16, autofill::FieldPropertiesMask>
|
| + expected_field_properties;
|
| + for (const autofill::FormFieldData& field : submitted_form.form_data.fields)
|
| + if (field.properties_mask)
|
| + expected_field_properties[field.name] = field.properties_mask;
|
| +
|
| + EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(),
|
| + StartUploadRequest(
|
| + CheckFieldPropertiesMasksUpload(expected_field_properties),
|
| + 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();
|
|
|