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 5a56528b47c67a2f7de94364b6d4cb850b128b54..368ce6d6377f806fc91000f23cf6855f92f3c908 100644 |
| --- a/components/password_manager/core/browser/password_form_manager_unittest.cc |
| +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc |
| @@ -387,9 +387,9 @@ class PasswordFormManagerTest : public testing::Test { |
| saved_match_.form_data.fields.push_back(field); |
| password_manager_.reset(new PasswordManager(&client_)); |
| - form_manager_.reset(new PasswordFormManager( |
| + form_manager_ = base::MakeRefCounted<PasswordFormManager>( |
| password_manager_.get(), &client_, client_.driver(), observed_form_, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fake_form_fetcher_)); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fake_form_fetcher_); |
| } |
| // Save saved_match() for observed_form() where |observed_form_data|, |
| @@ -406,9 +406,9 @@ class PasswordFormManagerTest : public testing::Test { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
|
vasilii
2017/05/29 13:15:48
Prefer base::MakeRefCounted to new
kolos1
2017/05/29 15:47:06
Done.
|
| password_manager(), client(), client()->driver(), form, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| PasswordForm match = CreateSavedMatch(false); |
| match.generation_upload_status = status; |
| match.times_used = times_used; |
| @@ -437,8 +437,8 @@ class PasswordFormManagerTest : public testing::Test { |
| if (field_type) { |
| // Show the password generation popup to check that the generation vote |
| // would be ignored. |
| - form_manager.set_generation_element(saved_match()->password_element); |
| - form_manager.set_generation_popup_was_shown(true); |
| + form_manager->set_generation_element(saved_match()->password_element); |
| + form_manager->set_generation_popup_was_shown(true); |
| expect_generation_vote = |
| *field_type != autofill::ACCOUNT_CREATION_PASSWORD; |
| @@ -459,9 +459,9 @@ class PasswordFormManagerTest : public testing::Test { |
| StartUploadRequest(_, _, _, _, _)) |
| .Times(0); |
| } |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| form_to_save, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| Mock::VerifyAndClearExpectations( |
| client()->mock_driver()->mock_autofill_download_manager()); |
| } |
| @@ -495,9 +495,9 @@ class PasswordFormManagerTest : public testing::Test { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match()}, 0u); |
| // User submits current and new credentials to the observed form. |
| @@ -507,21 +507,21 @@ class PasswordFormManagerTest : public testing::Test { |
| submitted_form.password_value = saved_match()->password_value; |
| submitted_form.new_password_value = ASCIIToUTF16("test2"); |
| submitted_form.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to update. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| EXPECT_FALSE( |
| - form_manager.is_possible_change_password_form_without_username()); |
| + form_manager->is_possible_change_password_form_without_username()); |
| // By now, the PasswordFormManager should have promoted the new password |
| // value already to be the current password, and should no longer maintain |
| // any info about the new password value. |
| EXPECT_EQ(submitted_form.new_password_value, |
| - form_manager.pending_credentials().password_value); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_value.empty()); |
| + form_manager->pending_credentials().password_value); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_value.empty()); |
| std::map<base::string16, autofill::ServerFieldType> expected_types; |
| expected_types[ASCIIToUTF16("full_name")] = autofill::UNKNOWN_TYPE; |
| @@ -557,13 +557,13 @@ class PasswordFormManagerTest : public testing::Test { |
| switch (field_type) { |
| case autofill::NEW_PASSWORD: |
| - form_manager.Update(*saved_match()); |
| + form_manager->Update(*saved_match()); |
| break; |
| case autofill::PROBABLY_NEW_PASSWORD: |
| - form_manager.OnNoInteraction(true /* it is an update */); |
| + form_manager->OnNoInteraction(true /* it is an update */); |
| break; |
| case autofill::NOT_NEW_PASSWORD: |
| - form_manager.OnNopeUpdateClicked(); |
| + form_manager->OnNopeUpdateClicked(); |
| break; |
| default: |
| NOTREACHED(); |
| @@ -638,9 +638,9 @@ class PasswordFormManagerTest : public testing::Test { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), form, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| @@ -649,13 +649,13 @@ class PasswordFormManagerTest : public testing::Test { |
| if (interaction == SAVE) |
| expected_available_field_types.insert(autofill::PASSWORD); |
| - form_manager.set_is_manual_generation(is_manual_generation); |
| + form_manager->set_is_manual_generation(is_manual_generation); |
| base::string16 generation_element = is_change_password_form |
| ? form.new_password_element |
| : form.password_element; |
| - form_manager.set_generation_element(generation_element); |
| - form_manager.set_generation_popup_was_shown(true); |
| - form_manager.set_has_generated_password(has_generated_password); |
| + form_manager->set_generation_element(generation_element); |
| + form_manager->set_generation_popup_was_shown(true); |
| + form_manager->set_has_generated_password(has_generated_password); |
| // Figure out expected generation event type. |
| autofill::AutofillUploadContents::Field::PasswordGenerationType |
| @@ -676,17 +676,17 @@ class PasswordFormManagerTest : public testing::Test { |
| form_structure.FormSignatureAsStr(), expected_generation_types), |
| false, expected_available_field_types, std::string(), true)); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| switch (interaction) { |
| case SAVE: |
| - form_manager.Save(); |
| + form_manager->Save(); |
| break; |
| case NEVER: |
| - form_manager.OnNeverClicked(); |
| + form_manager->OnNeverClicked(); |
| break; |
| case NO_INTERACTION: |
| - form_manager.OnNoInteraction(false /* not an update prompt*/); |
| + form_manager->OnNoInteraction(false /* not an update prompt*/); |
| break; |
| } |
| Mock::VerifyAndClearExpectations( |
| @@ -725,7 +725,7 @@ class PasswordFormManagerTest : public testing::Test { |
| // Define |fake_form_fetcher_| before |form_manager_|, because the former |
| // needs to outlive the latter. |
| FakeFormFetcher fake_form_fetcher_; |
| - std::unique_ptr<PasswordFormManager> form_manager_; |
| + scoped_refptr<PasswordFormManager> form_manager_; |
| }; |
| class PasswordFormManagerFillOnAccountSelectTest |
| @@ -844,9 +844,9 @@ TEST_F(PasswordFormManagerTest, TestBlacklistMatching) { |
| observed_form()->signon_realm = "http://accounts.google.com"; |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| // Doesn't apply because it is just a PSL match of the observed form. |
| PasswordForm blacklisted_psl = *observed_form(); |
| @@ -889,12 +889,12 @@ TEST_F(PasswordFormManagerTest, TestBlacklistMatching) { |
| saved_match()}; |
| fetcher.SetNonFederated(matches, 0u); |
| - EXPECT_TRUE(form_manager.IsBlacklisted()); |
| - EXPECT_THAT(form_manager.blacklisted_matches(), |
| + EXPECT_TRUE(form_manager->IsBlacklisted()); |
| + EXPECT_THAT(form_manager->blacklisted_matches(), |
| UnorderedElementsAre(Pointee(blacklisted_match), |
| Pointee(blacklisted_match2))); |
| - EXPECT_EQ(1u, form_manager.best_matches().size()); |
| - EXPECT_EQ(*saved_match(), *form_manager.preferred_match()); |
| + EXPECT_EQ(1u, form_manager->best_matches().size()); |
| + EXPECT_EQ(*saved_match(), *form_manager->preferred_match()); |
| } |
| // Test that even in the presence of blacklisted matches, the non-blacklisted |
| @@ -984,9 +984,9 @@ TEST_F(PasswordFormManagerTest, TestNewLoginFromNewPasswordElement) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| // User enters current and new credentials to the observed form. |
| @@ -995,28 +995,28 @@ TEST_F(PasswordFormManagerTest, TestNewLoginFromNewPasswordElement) { |
| credentials.password_value = ASCIIToUTF16("oldpassword"); |
| credentials.new_password_value = ASCIIToUTF16("newpassword"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, which should know this is a new login. |
| - EXPECT_TRUE(form_manager.IsNewLogin()); |
| - EXPECT_EQ(credentials.origin, form_manager.pending_credentials().origin); |
| + EXPECT_TRUE(form_manager->IsNewLogin()); |
| + EXPECT_EQ(credentials.origin, form_manager->pending_credentials().origin); |
| EXPECT_EQ(credentials.signon_realm, |
| - form_manager.pending_credentials().signon_realm); |
| - EXPECT_EQ(credentials.action, form_manager.pending_credentials().action); |
| - EXPECT_TRUE(form_manager.pending_credentials().preferred); |
| + form_manager->pending_credentials().signon_realm); |
| + EXPECT_EQ(credentials.action, form_manager->pending_credentials().action); |
| + EXPECT_TRUE(form_manager->pending_credentials().preferred); |
| EXPECT_EQ(credentials.username_value, |
| - form_manager.pending_credentials().username_value); |
| + form_manager->pending_credentials().username_value); |
| // By this point, the PasswordFormManager should have promoted the new |
| // password value to be the current password, and should have wiped the |
| // password element name: it is likely going to be different on a login |
| // form, so it is not worth remembering them. |
| EXPECT_EQ(credentials.new_password_value, |
| - form_manager.pending_credentials().password_value); |
| - EXPECT_TRUE(form_manager.pending_credentials().password_element.empty()); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_value.empty()); |
| + form_manager->pending_credentials().password_value); |
| + EXPECT_TRUE(form_manager->pending_credentials().password_element.empty()); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_value.empty()); |
| } |
| TEST_F(PasswordFormManagerTest, TestUpdatePassword) { |
| @@ -1067,9 +1067,9 @@ TEST_F(PasswordFormManagerTest, TestUpdatePasswordFromNewPasswordElement) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match()}, 0u); |
| // User submits current and new credentials to the observed form. |
| @@ -1078,28 +1078,28 @@ TEST_F(PasswordFormManagerTest, TestUpdatePasswordFromNewPasswordElement) { |
| credentials.password_value = saved_match()->password_value; |
| credentials.new_password_value = ASCIIToUTF16("test2"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, and since this is an update, it should know not to save as a new |
| // login. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| // By now, the PasswordFormManager should have promoted the new password value |
| // already to be the current password, and should no longer maintain any info |
| // about the new password. |
| EXPECT_EQ(credentials.new_password_value, |
| - form_manager.pending_credentials().password_value); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_element.empty()); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_value.empty()); |
| + form_manager->pending_credentials().password_value); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_element.empty()); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_value.empty()); |
| // Trigger saving to exercise some special case handling for updating. |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), Update(_, _, _, nullptr)) |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), Update(_, _, _, nullptr)) |
| .WillOnce(testing::SaveArg<0>(&new_credentials)); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| // No meta-information should be updated, only the password. |
| EXPECT_EQ(credentials.new_password_value, new_credentials.password_value); |
| @@ -1118,9 +1118,9 @@ TEST_F(PasswordFormManagerTest, TestIgnoreResult_Paths) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), observed, |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), observed, |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| PasswordForm saved_form = observed; |
| saved_form.origin = GURL("https://accounts.google.com/a/OtherLoginAuth"); |
| @@ -1128,8 +1128,8 @@ TEST_F(PasswordFormManagerTest, TestIgnoreResult_Paths) { |
| fetcher.SetNonFederated({&saved_form}, 0u); |
| // Different paths for action / origin are okay. |
| - EXPECT_EQ(1u, form_manager.best_matches().size()); |
| - EXPECT_EQ(*form_manager.best_matches().begin()->second, saved_form); |
| + EXPECT_EQ(1u, form_manager->best_matches().size()); |
| + EXPECT_EQ(*form_manager->best_matches().begin()->second, saved_form); |
| } |
| // Test that saved empty action URL is updated with the submitted action URL. |
| @@ -1289,9 +1289,9 @@ TEST_F(PasswordFormManagerTest, |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), signup_form, |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), signup_form, |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| EXPECT_CALL(*(client()->mock_driver()), AllowPasswordGenerationForForm(_)); |
| PasswordForm simulated_result = CreateSavedMatch(false); |
| fetcher.SetNonFederated({&simulated_result}, 0u); |
| @@ -1441,9 +1441,9 @@ TEST_F(PasswordFormManagerTest, TestUpdateIncompleteCredentials) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), encountered_form, |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), encountered_form, |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| PasswordForm incomplete_form; |
| incomplete_form.origin = GURL("http://accounts.google.com/LoginAuth"); |
| @@ -1469,16 +1469,16 @@ TEST_F(PasswordFormManagerTest, TestUpdateIncompleteCredentials) { |
| // Feed the incomplete credentials to the manager. |
| fetcher.SetNonFederated({&incomplete_form}, 0u); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| complete_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // By now that form has been used once. |
| complete_form.times_used = 1; |
| obsolete_form.times_used = 1; |
| // Check that PasswordStore receives an update request with the complete form. |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), |
| Update(complete_form, _, _, Pointee(obsolete_form))); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| } |
| // Test that public-suffix-matched credentials score lower than same-origin |
| @@ -1620,10 +1620,10 @@ TEST_F(PasswordFormManagerTest, InvalidActionURLsDoNotMatch) { |
| PasswordFormManager::RESULT_ACTION_MATCH); |
| // Then when the observed form has an invalid URL: |
| PasswordForm valid_action_form(*observed_form()); |
| - PasswordFormManager invalid_manager( |
| + scoped_refptr<PasswordFormManager> invalid_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), invalid_action_form, |
| - base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
| - EXPECT_EQ(0, invalid_manager.DoesManage(valid_action_form, nullptr) & |
| + base::MakeUnique<MockFormSaver>(), fake_form_fetcher())); |
| + EXPECT_EQ(0, invalid_manager->DoesManage(valid_action_form, nullptr) & |
| PasswordFormManager::RESULT_ACTION_MATCH); |
| } |
| @@ -1637,10 +1637,11 @@ TEST_F(PasswordFormManagerTest, EmptyActionURLsDoNotMatchNonEmpty) { |
| PasswordFormManager::RESULT_ACTION_MATCH); |
| // Then when the observed form has an empty URL: |
| PasswordForm valid_action_form(*observed_form()); |
| - PasswordFormManager empty_action_manager( |
| - password_manager(), client(), client()->driver(), empty_action_form, |
| - base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
| - EXPECT_EQ(0, empty_action_manager.DoesManage(valid_action_form, nullptr) & |
| + scoped_refptr<PasswordFormManager> empty_action_manager( |
| + new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), empty_action_form, |
| + base::MakeUnique<MockFormSaver>(), fake_form_fetcher())); |
| + EXPECT_EQ(0, empty_action_manager->DoesManage(valid_action_form, nullptr) & |
| PasswordFormManager::RESULT_ACTION_MATCH); |
| } |
| @@ -1653,10 +1654,10 @@ TEST_F(PasswordFormManagerTest, NonHTMLFormsDoNotMatchHTMLForms) { |
| // The other way round: observing a non-HTML form, don't match a HTML form. |
| PasswordForm html_form(*observed_form()); |
| - PasswordFormManager non_html_manager( |
| + scoped_refptr<PasswordFormManager> non_html_manager(new PasswordFormManager( |
| password_manager(), client(), kNoDriver, non_html_form, |
| - base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
| - EXPECT_EQ(0, non_html_manager.DoesManage(html_form, nullptr) & |
| + base::MakeUnique<MockFormSaver>(), fake_form_fetcher())); |
| + EXPECT_EQ(0, non_html_manager->DoesManage(html_form, nullptr) & |
| PasswordFormManager::RESULT_HTML_ATTRIBUTES_MATCH); |
| } |
| @@ -1690,16 +1691,16 @@ TEST_F(PasswordFormManagerTest, |
| PasswordForm secure_observed_form(*observed_form()); |
| secure_observed_form.origin = GURL("https://accounts.google.com/a/LoginAuth"); |
| - PasswordFormManager secure_manager( |
| + scoped_refptr<PasswordFormManager> secure_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), secure_observed_form, |
| - base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
| + base::MakeUnique<MockFormSaver>(), fake_form_fetcher())); |
| // Also for HTTPS in the observed form, and HTTP in the compared form, an |
| // exact path match is expected. |
| - EXPECT_EQ(0, secure_manager.DoesManage(form_longer_path, nullptr) & |
| + EXPECT_EQ(0, secure_manager->DoesManage(form_longer_path, nullptr) & |
| PasswordFormManager::RESULT_HTML_ATTRIBUTES_MATCH); |
| // Not even upgrade to HTTPS in the compared form should help. |
| form_longer_path.origin = GURL("https://accounts.google.com/a/LoginAuth/sec"); |
| - EXPECT_EQ(0, secure_manager.DoesManage(form_longer_path, nullptr) & |
| + EXPECT_EQ(0, secure_manager->DoesManage(form_longer_path, nullptr) & |
| PasswordFormManager::RESULT_HTML_ATTRIBUTES_MATCH); |
| } |
| @@ -1787,9 +1788,9 @@ TEST_F(PasswordFormManagerTest, UploadFormData_NewPassword) { |
| // Don't vote for the username field yet. |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), *saved_match(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| PasswordForm form_to_save(*saved_match()); |
| @@ -1802,18 +1803,19 @@ TEST_F(PasswordFormManagerTest, UploadFormData_NewPassword) { |
| EXPECT_CALL( |
| *client()->mock_driver()->mock_autofill_download_manager(), |
| StartUploadRequest(_, false, expected_available_field_types, _, true)); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| form_to_save, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| } |
| TEST_F(PasswordFormManagerTest, UploadFormData_NewPassword_Blacklist) { |
| // Do not upload a vote if the user is blacklisting the form. |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager blacklist_form_manager( |
| - password_manager(), client(), client()->driver(), *saved_match(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> blacklist_form_manager( |
| + new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *saved_match(), |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| autofill::ServerFieldTypeSet expected_available_field_types; |
| @@ -1822,7 +1824,7 @@ TEST_F(PasswordFormManagerTest, UploadFormData_NewPassword_Blacklist) { |
| EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(), |
| StartUploadRequest(_, _, expected_available_field_types, _, true)) |
| .Times(0); |
| - blacklist_form_manager.PermanentlyBlacklist(); |
| + blacklist_form_manager->PermanentlyBlacklist(); |
| } |
| TEST_F(PasswordFormManagerTest, UploadPasswordForm) { |
| @@ -1907,9 +1909,9 @@ TEST_F(PasswordFormManagerTest, DriverDeletedBeforeStoreDone) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), form, |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), form, |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| // Suddenly, the frame and its driver disappear. |
| client()->KillDriver(); |
| @@ -1987,10 +1989,10 @@ TEST_F(PasswordFormManagerTest, TestSuggestingPasswordChangeForms) { |
| base::ASCIIToUTF16("new_pwd"); |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager manager_creds( |
| - password_manager(), client(), client()->driver(), |
| - observed_change_password_form, base::MakeUnique<MockFormSaver>(), |
| - &fetcher); |
| + scoped_refptr<PasswordFormManager> manager_creds( |
| + new PasswordFormManager(password_manager(), client(), client()->driver(), |
| + observed_change_password_form, |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| autofill::PasswordFormFillData fill_data; |
| EXPECT_CALL(*client()->mock_driver(), FillPasswordForm(_)) |
| @@ -1998,7 +2000,7 @@ TEST_F(PasswordFormManagerTest, TestSuggestingPasswordChangeForms) { |
| PasswordForm result = CreateSavedMatch(false); |
| fetcher.SetNonFederated({&result}, 0u); |
| - EXPECT_EQ(1u, manager_creds.best_matches().size()); |
| + EXPECT_EQ(1u, manager_creds->best_matches().size()); |
| EXPECT_EQ(0u, fill_data.additional_logins.size()); |
| EXPECT_TRUE(fill_data.wait_for_username); |
| } |
| @@ -2024,9 +2026,9 @@ TEST_F(PasswordFormManagerTest, TestUpdateMethod) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match()}, 0u); |
| @@ -2036,29 +2038,29 @@ TEST_F(PasswordFormManagerTest, TestUpdateMethod) { |
| credentials.password_value = saved_match()->password_value; |
| credentials.new_password_value = ASCIIToUTF16("test2"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, and since this is an update, it should know not to save as a new |
| // login. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| EXPECT_FALSE( |
| - form_manager.is_possible_change_password_form_without_username()); |
| + form_manager->is_possible_change_password_form_without_username()); |
| // By now, the PasswordFormManager should have promoted the new password value |
| // already to be the current password, and should no longer maintain any info |
| // about the new password value. |
| EXPECT_EQ(credentials.new_password_value, |
| - form_manager.pending_credentials().password_value); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_value.empty()); |
| + form_manager->pending_credentials().password_value); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_value.empty()); |
| // Trigger saving to exercise some special case handling during updating. |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), Update(_, _, _, nullptr)) |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), Update(_, _, _, nullptr)) |
| .WillOnce(SaveArg<0>(&new_credentials)); |
| - form_manager.Update(*saved_match()); |
| + form_manager->Update(*saved_match()); |
| // No meta-information should be updated, only the password. |
| EXPECT_EQ(credentials.new_password_value, new_credentials.password_value); |
| @@ -2089,9 +2091,9 @@ TEST_F(PasswordFormManagerTest, TestUpdateNoUsernameTextfieldPresent) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match()}, 0u); |
| @@ -2102,30 +2104,31 @@ TEST_F(PasswordFormManagerTest, TestUpdateNoUsernameTextfieldPresent) { |
| credentials.password_value = saved_match()->password_value; |
| credentials.new_password_value = ASCIIToUTF16("test2"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, and since this is an update, it should know not to save as a new |
| // login. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| - EXPECT_TRUE(form_manager.is_possible_change_password_form_without_username()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| + EXPECT_TRUE( |
| + form_manager->is_possible_change_password_form_without_username()); |
| // By now, the PasswordFormManager should have promoted the new password value |
| // already to be the current password, and should no longer maintain any info |
| // about the new password value. |
| EXPECT_EQ(saved_match()->username_value, |
| - form_manager.pending_credentials().username_value); |
| + form_manager->pending_credentials().username_value); |
| EXPECT_EQ(credentials.new_password_value, |
| - form_manager.pending_credentials().password_value); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_value.empty()); |
| + form_manager->pending_credentials().password_value); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_value.empty()); |
| // Trigger saving to exercise some special case handling during updating. |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), Update(_, _, _, nullptr)) |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), Update(_, _, _, nullptr)) |
| .WillOnce(SaveArg<0>(&new_credentials)); |
| - form_manager.Update(form_manager.pending_credentials()); |
| + form_manager->Update(form_manager->pending_credentials()); |
| // No other information than password value should be updated. In particular |
| // not the username. |
| @@ -2144,21 +2147,21 @@ TEST_F(PasswordFormManagerTest, WipeStoreCopyIfOutdated_BeforeStoreCallback) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), form, |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), form, |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| // The creation of |fetcher| keeps it waiting for store results. This test |
| // keeps the fetcher waiting on purpose. |
| PasswordForm submitted_form(form); |
| submitted_form.password_value += ASCIIToUTF16("add stuff, make it different"); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| base::HistogramTester histogram_tester; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), |
| - WipeOutdatedCopies(form_manager.pending_credentials(), _, _)); |
| - form_manager.WipeStoreCopyIfOutdated(); |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), |
| + WipeOutdatedCopies(form_manager->pending_credentials(), _, _)); |
| + form_manager->WipeStoreCopyIfOutdated(); |
| histogram_tester.ExpectUniqueSample("PasswordManager.StoreReadyWhenWiping", 0, |
| 1); |
| } |
| @@ -2277,9 +2280,9 @@ TEST_F(PasswordFormManagerTest, UploadChangePasswordForm) { |
| TEST_F(PasswordFormManagerTest, TestUpdatePSLMatchedCredentials) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match(), psl_saved_match()}, 0u); |
| // User submits a credentials with an old username and a new password. |
| @@ -2287,24 +2290,24 @@ TEST_F(PasswordFormManagerTest, TestUpdatePSLMatchedCredentials) { |
| credentials.username_value = saved_match()->username_value; |
| credentials.password_value = ASCIIToUTF16("new_password"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, and since this is an update, it should know not to save as a new |
| // login. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| // Trigger saving to exercise some special case handling during updating. |
| PasswordForm new_credentials; |
| std::vector<autofill::PasswordForm> credentials_to_update; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), Update(_, _, _, nullptr)) |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), Update(_, _, _, nullptr)) |
| .WillOnce(testing::DoAll(SaveArg<0>(&new_credentials), |
| SaveArgPointee<2>(&credentials_to_update))); |
| EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(), |
| StartUploadRequest(_, false, _, _, true)); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| // No meta-information should be updated, only the password. |
| EXPECT_EQ(credentials.password_value, new_credentials.password_value); |
| @@ -2329,9 +2332,9 @@ TEST_F(PasswordFormManagerTest, |
| TestNotUpdatePSLMatchedCredentialsWithAnotherUsername) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| psl_saved_match()->username_value += ASCIIToUTF16("1"); |
| fetcher.SetNonFederated({saved_match(), psl_saved_match()}, 0u); |
| @@ -2340,23 +2343,23 @@ TEST_F(PasswordFormManagerTest, |
| credentials.username_value = saved_match()->username_value; |
| credentials.password_value = ASCIIToUTF16("new_password"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, and since this is an update, it should know not to save as a new |
| // login. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| // Trigger saving to exercise some special case handling during updating. |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), |
| Update(_, _, Pointee(IsEmpty()), nullptr)) |
| .WillOnce(testing::SaveArg<0>(&new_credentials)); |
| EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(), |
| StartUploadRequest(_, false, _, _, true)); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| // No meta-information should be updated, only the password. |
| EXPECT_EQ(credentials.password_value, new_credentials.password_value); |
| @@ -2370,9 +2373,9 @@ TEST_F(PasswordFormManagerTest, |
| TestNotUpdatePSLMatchedCredentialsWithAnotherPassword) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| psl_saved_match()->password_value += ASCIIToUTF16("1"); |
| fetcher.SetNonFederated({saved_match(), psl_saved_match()}, 0u); |
| @@ -2381,23 +2384,23 @@ TEST_F(PasswordFormManagerTest, |
| credentials.username_value = saved_match()->username_value; |
| credentials.password_value = ASCIIToUTF16("new_password"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to save, and since this is an update, it should know not to save as a new |
| // login. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| // Trigger saving to exercise some special case handling during updating. |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), |
| Update(_, _, Pointee(IsEmpty()), nullptr)) |
| .WillOnce(testing::SaveArg<0>(&new_credentials)); |
| EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(), |
| StartUploadRequest(_, false, _, _, true)); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| // No meta-information should be updated, only the password. |
| EXPECT_EQ(credentials.password_value, new_credentials.password_value); |
| @@ -2410,9 +2413,9 @@ TEST_F(PasswordFormManagerTest, |
| TEST_F(PasswordFormManagerTest, TestNotUpdateWhenOnlyPSLMatched) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), 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. |
| @@ -2420,18 +2423,18 @@ TEST_F(PasswordFormManagerTest, TestNotUpdateWhenOnlyPSLMatched) { |
| credentials.username_value = saved_match()->username_value; |
| credentials.password_value = ASCIIToUTF16("new_password"); |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - EXPECT_TRUE(form_manager.IsNewLogin()); |
| + EXPECT_TRUE(form_manager->IsNewLogin()); |
| // PSL matched credential should not be updated, since we are not sure that |
| // this is the same credential as submitted one. |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), Save(_, _, nullptr)) |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), Save(_, _, nullptr)) |
| .WillOnce(testing::SaveArg<0>(&new_credentials)); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| EXPECT_EQ(credentials.password_value, new_credentials.password_value); |
| EXPECT_EQ(credentials.username_value, new_credentials.username_value); |
| @@ -2566,9 +2569,9 @@ TEST_F(PasswordFormManagerTest, |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match()}, 0u); |
| // User submits current and new credentials to the observed form. |
| @@ -2576,20 +2579,21 @@ TEST_F(PasswordFormManagerTest, |
| submitted_form.password_value = saved_match()->password_value; |
| submitted_form.new_password_value = ASCIIToUTF16("test2"); |
| submitted_form.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| // Successful login. The PasswordManager would instruct PasswordFormManager |
| // to update. |
| - EXPECT_FALSE(form_manager.IsNewLogin()); |
| - EXPECT_TRUE(form_manager.is_possible_change_password_form_without_username()); |
| + EXPECT_FALSE(form_manager->IsNewLogin()); |
| + EXPECT_TRUE( |
| + form_manager->is_possible_change_password_form_without_username()); |
| // By now, the PasswordFormManager should have promoted the new password |
| // value already to be the current password, and should no longer maintain |
| // any info about the new password value. |
| EXPECT_EQ(submitted_form.new_password_value, |
| - form_manager.pending_credentials().password_value); |
| - EXPECT_TRUE(form_manager.pending_credentials().new_password_value.empty()); |
| + form_manager->pending_credentials().password_value); |
| + EXPECT_TRUE(form_manager->pending_credentials().new_password_value.empty()); |
| std::map<base::string16, autofill::ServerFieldType> expected_types; |
| expected_types[observed_form()->password_element] = autofill::PASSWORD; |
| @@ -2613,7 +2617,7 @@ TEST_F(PasswordFormManagerTest, |
| false, expected_available_field_types, |
| expected_login_signature, true)); |
| - form_manager.Update(*saved_match()); |
| + form_manager->Update(*saved_match()); |
| } |
| // Checks uploading a vote about the usage of the password generation popup. |
| @@ -2649,14 +2653,14 @@ TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), form, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| base::string16 generation_element = form.password_element; |
| if (found_generation_element) |
| - form_manager.SaveGenerationFieldDetectedByClassifier(generation_element); |
| + form_manager->SaveGenerationFieldDetectedByClassifier(generation_element); |
| else |
| - form_manager.SaveGenerationFieldDetectedByClassifier(base::string16()); |
| + form_manager->SaveGenerationFieldDetectedByClassifier(base::string16()); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| @@ -2668,9 +2672,9 @@ TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) { |
| found_generation_element, generation_element), |
| false, _, _, true)); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| } |
| } |
| @@ -2686,9 +2690,9 @@ TEST_F(PasswordFormManagerTest, FieldPropertiesMasksUpload) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), form, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| DCHECK_EQ(3U, form.form_data.fields.size()); |
| @@ -2707,9 +2711,9 @@ TEST_F(PasswordFormManagerTest, FieldPropertiesMasksUpload) { |
| StartUploadRequest( |
| CheckFieldPropertiesMasksUpload(expected_field_properties), |
| false, _, _, true)); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| } |
| TEST_F(PasswordFormManagerTest, TestSavingAPIFormsWithSamePassword) { |
| @@ -2721,9 +2725,9 @@ TEST_F(PasswordFormManagerTest, TestSavingAPIFormsWithSamePassword) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager(password_manager(), client(), |
| - client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<MockFormSaver>(), &fetcher)); |
| fetcher.SetNonFederated({saved_match()}, 0u); |
| // User submits new credentials with the same password as in already saved |
| @@ -2734,16 +2738,16 @@ TEST_F(PasswordFormManagerTest, TestSavingAPIFormsWithSamePassword) { |
| credentials.password_value = saved_match()->password_value; |
| credentials.preferred = true; |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - EXPECT_TRUE(form_manager.IsNewLogin()); |
| + EXPECT_TRUE(form_manager->IsNewLogin()); |
| PasswordForm new_credentials; |
| - EXPECT_CALL(MockFormSaver::Get(&form_manager), Save(_, _, nullptr)) |
| + EXPECT_CALL(MockFormSaver::Get(form_manager.get()), Save(_, _, nullptr)) |
| .WillOnce(SaveArg<0>(&new_credentials)); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| EXPECT_EQ(saved_match()->username_value + ASCIIToUTF16("1"), |
| new_credentials.username_value); |
| @@ -2787,9 +2791,9 @@ TEST_F(PasswordFormManagerTest, ProbablyAccountCreationUpload) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), form, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| PasswordForm form_to_save(form); |
| form_to_save.preferred = true; |
| @@ -2817,9 +2821,9 @@ TEST_F(PasswordFormManagerTest, ProbablyAccountCreationUpload) { |
| false /* expect_generation_vote */), |
| false, expected_available_field_types, std::string(), true)); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| form_to_save, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| } |
| TEST_F(PasswordFormManagerFillOnAccountSelectTest, ProcessFrame) { |
| @@ -2875,11 +2879,11 @@ TEST_F(PasswordFormManagerTest, RemoveResultsWithWrongScheme_ObservingHTML) { |
| observed.scheme = kCorrectScheme; |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), |
| (kCorrectScheme == PasswordForm::SCHEME_HTML ? client()->driver() |
| : nullptr), |
| - observed, base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + observed, base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| PasswordForm match = *saved_match(); |
| match.scheme = kCorrectScheme; |
| @@ -2888,20 +2892,20 @@ TEST_F(PasswordFormManagerTest, RemoveResultsWithWrongScheme_ObservingHTML) { |
| non_match.scheme = kWrongScheme; |
| // First try putting the correct scheme first in returned matches. |
| - static_cast<FormFetcher::Consumer*>(&form_manager) |
| + static_cast<FormFetcher::Consumer*>(form_manager.get()) |
| ->ProcessMatches({&match, &non_match}, 0u); |
| - EXPECT_EQ(1u, form_manager.best_matches().size()); |
| + EXPECT_EQ(1u, form_manager->best_matches().size()); |
| EXPECT_EQ(kCorrectScheme, |
| - form_manager.best_matches().begin()->second->scheme); |
| + form_manager->best_matches().begin()->second->scheme); |
| // Now try putting the correct scheme last in returned matches. |
| - static_cast<FormFetcher::Consumer*>(&form_manager) |
| + static_cast<FormFetcher::Consumer*>(form_manager.get()) |
| ->ProcessMatches({&non_match, &match}, 0u); |
| - EXPECT_EQ(1u, form_manager.best_matches().size()); |
| + EXPECT_EQ(1u, form_manager->best_matches().size()); |
| EXPECT_EQ(kCorrectScheme, |
| - form_manager.best_matches().begin()->second->scheme); |
| + form_manager->best_matches().begin()->second->scheme); |
| } |
| } |
| } |
| @@ -3046,13 +3050,13 @@ TEST_F(PasswordFormManagerTest, DropFetcherOnDestruction) { |
| MockFormFetcher fetcher; |
| FormFetcher::Consumer* added_consumer = nullptr; |
| EXPECT_CALL(fetcher, AddConsumer(_)).WillOnce(SaveArg<0>(&added_consumer)); |
| - auto form_manager = base::MakeUnique<PasswordFormManager>( |
| + auto form_manager = base::MakeRefCounted<PasswordFormManager>( |
| password_manager(), client(), client()->driver(), *observed_form(), |
| base::MakeUnique<MockFormSaver>(), &fetcher); |
| EXPECT_EQ(form_manager.get(), added_consumer); |
| EXPECT_CALL(fetcher, RemoveConsumer(form_manager.get())); |
| - form_manager.reset(); |
| + form_manager = nullptr; |
| } |
| // Check that if asked to take ownership of the same FormFetcher which it had |
| @@ -3061,17 +3065,17 @@ TEST_F(PasswordFormManagerTest, DropFetcherOnDestruction) { |
| TEST_F(PasswordFormManagerTest, GrabFetcher_Same) { |
| auto fetcher = base::MakeUnique<MockFormFetcher>(); |
| fetcher->Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), fetcher.get()); |
| + base::MakeUnique<MockFormSaver>(), fetcher.get())); |
| EXPECT_CALL(*fetcher, AddConsumer(_)).Times(0); |
| EXPECT_CALL(*fetcher, RemoveConsumer(_)).Times(0); |
| - form_manager.GrabFetcher(std::move(fetcher)); |
| + form_manager->GrabFetcher(std::move(fetcher)); |
| // There will be a RemoveConsumer call as soon as form_manager goes out of |
| // scope, but the test needs to ensure that there is none as a result of |
| // GrabFetcher. |
| - Mock::VerifyAndClearExpectations(form_manager.form_fetcher()); |
| + Mock::VerifyAndClearExpectations(form_manager->form_fetcher()); |
| } |
| // Check that if asked to take ownership of a different FormFetcher than which |
| @@ -3103,15 +3107,15 @@ TEST_F(PasswordFormManagerTest, GrabFetcher_Remove) { |
| FormFetcher::Consumer* added_consumer = nullptr; |
| EXPECT_CALL(old_fetcher, AddConsumer(_)) |
| .WillOnce(SaveArg<0>(&added_consumer)); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<MockFormSaver>(), &old_fetcher); |
| - EXPECT_EQ(&form_manager, added_consumer); |
| + base::MakeUnique<MockFormSaver>(), &old_fetcher)); |
| + EXPECT_EQ(form_manager.get(), added_consumer); |
| auto new_fetcher = base::MakeUnique<MockFormFetcher>(); |
| - EXPECT_CALL(*new_fetcher, AddConsumer(&form_manager)); |
| - EXPECT_CALL(old_fetcher, RemoveConsumer(&form_manager)); |
| - form_manager.GrabFetcher(std::move(new_fetcher)); |
| + EXPECT_CALL(*new_fetcher, AddConsumer(form_manager.get())); |
| + EXPECT_CALL(old_fetcher, RemoveConsumer(form_manager.get())); |
| + form_manager->GrabFetcher(std::move(new_fetcher)); |
| } |
| TEST_F(PasswordFormManagerTest, UploadSignInForm_WithAutofillTypes) { |
| @@ -3128,9 +3132,9 @@ TEST_F(PasswordFormManagerTest, UploadSignInForm_WithAutofillTypes) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| PasswordForm form_to_save(*observed_form()); |
| @@ -3143,9 +3147,9 @@ TEST_F(PasswordFormManagerTest, UploadSignInForm_WithAutofillTypes) { |
| client()->mock_driver()->mock_autofill_manager(); |
| EXPECT_CALL(*mock_autofill_manager, StartUploadProcessPtr(_, _, true)) |
| .WillOnce(WithArg<0>(SaveToUniquePtr(&uploaded_form_structure))); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| form_to_save, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| ASSERT_EQ(2u, uploaded_form_structure->field_count()); |
| autofill::ServerFieldTypeSet expected_types = {autofill::PASSWORD}; |
| @@ -3165,9 +3169,9 @@ TEST_F(PasswordFormManagerTest, NoUploadsForSubmittedFormWithOnlyOneField) { |
| FakeFormFetcher fetcher; |
| fetcher.Fetch(); |
| - PasswordFormManager form_manager( |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| PasswordForm form_to_save(*observed_form()); |
| @@ -3177,9 +3181,9 @@ TEST_F(PasswordFormManagerTest, NoUploadsForSubmittedFormWithOnlyOneField) { |
| auto* mock_autofill_manager = |
| client()->mock_driver()->mock_autofill_manager(); |
| EXPECT_CALL(*mock_autofill_manager, StartUploadProcessPtr(_, _, _)).Times(0); |
| - form_manager.ProvisionallySave( |
| + form_manager->ProvisionallySave( |
| form_to_save, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| - form_manager.Save(); |
| + form_manager->Save(); |
| } |
| // If the frame containing the login form is served over HTTPS, no histograms |
| @@ -3203,12 +3207,11 @@ TEST_F(PasswordFormManagerTest, |
| fetcher.set_did_complete_querying_suppressed_https_forms(true); |
| fetcher.Fetch(); |
| - std::unique_ptr<PasswordFormManager> form_manager = |
| - base::MakeUnique<PasswordFormManager>( |
| - password_manager(), client(), client()->driver(), https_observed_form, |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), https_observed_form, |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| - form_manager.reset(); |
| + form_manager = nullptr; |
| histogram_tester.ExpectTotalCount( |
| "PasswordManager.QueryingSuppressedAccountsFinished", 0); |
| @@ -3223,12 +3226,11 @@ TEST_F(PasswordFormManagerTest, |
| fake_form_fetcher()->set_did_complete_querying_suppressed_https_forms(false); |
| fake_form_fetcher()->Fetch(); |
| - std::unique_ptr<PasswordFormManager> form_manager = |
| - base::MakeUnique<PasswordFormManager>( |
| - password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), fake_form_fetcher()); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), fake_form_fetcher())); |
| fake_form_fetcher()->SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
| - form_manager.reset(); |
| + form_manager = nullptr; |
| histogram_tester.ExpectUniqueSample( |
| "PasswordManager.QueryingSuppressedAccountsFinished", false, 1); |
| @@ -3364,10 +3366,9 @@ TEST_F(PasswordFormManagerTest, |
| ASCIIToUTF16(test_case.filled_password); |
| FakeFormFetcher fetcher; |
| - std::unique_ptr<PasswordFormManager> form_manager = |
| - base::MakeUnique<PasswordFormManager>( |
| - password_manager(), client(), client()->driver(), *observed_form(), |
| - base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
| + scoped_refptr<PasswordFormManager> form_manager(new PasswordFormManager( |
| + password_manager(), client(), client()->driver(), *observed_form(), |
| + base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
| PasswordForm http_stored_form = *saved_match(); |
| http_stored_form.username_value = filled_username; |
| @@ -3412,7 +3413,7 @@ TEST_F(PasswordFormManagerTest, |
| } |
| } |
| - form_manager.reset(); |
| + form_manager = nullptr; |
| histogram_tester.ExpectUniqueSample( |
| "PasswordManager.QueryingSuppressedAccountsFinished", true, 1); |