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 e4ed9f70800446feb8141ee565fbee0a998aad22..ebef05d0719f3cf5d1e6bcfbdbb768eb7838fb05 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,10 @@ class PasswordFormManagerTest : public testing::Test { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), form, |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), form, |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
PasswordForm match = CreateSavedMatch(false); |
match.generation_upload_status = status; |
match.times_used = times_used; |
@@ -437,8 +438,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 +460,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 +496,10 @@ class PasswordFormManagerTest : public testing::Test { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
fetcher.SetNonFederated({saved_match()}, 0u); |
// User submits current and new credentials to the observed form. |
@@ -507,21 +509,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 +559,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 +640,10 @@ class PasswordFormManagerTest : public testing::Test { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), form, |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), form, |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
@@ -649,13 +652,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 +679,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( |
@@ -750,9 +753,10 @@ class PasswordFormManagerTest : public testing::Test { |
const char* filled_username, |
const char* filled_password, |
const char* submitted_password = nullptr) { |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<NiceMock<MockFormSaver>>(), fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), fetcher)); |
EXPECT_CALL(*client()->mock_driver()->mock_autofill_download_manager(), |
StartUploadRequest(_, _, _, _, _)) |
@@ -788,13 +792,13 @@ class PasswordFormManagerTest : public testing::Test { |
submitted_password ? base::ASCIIToUTF16(submitted_password) |
: base::ASCIIToUTF16(filled_password); |
- form_manager.ProvisionallySave( |
+ form_manager->ProvisionallySave( |
submitted_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
if (submit_result == SimulatedSubmitResult::PASSED) { |
- form_manager.LogSubmitPassed(); |
- form_manager.Save(); |
+ form_manager->LogSubmitPassed(); |
+ form_manager->Save(); |
} else { |
- form_manager.LogSubmitFailed(); |
+ form_manager->LogSubmitFailed(); |
} |
} |
} |
@@ -811,7 +815,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 |
@@ -930,9 +934,10 @@ 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( |
+ base::MakeRefCounted<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(); |
@@ -975,12 +980,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 |
@@ -1070,9 +1075,10 @@ 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( |
+ base::MakeRefCounted<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. |
@@ -1081,28 +1087,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) { |
@@ -1153,9 +1159,10 @@ 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( |
+ base::MakeRefCounted<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. |
@@ -1164,28 +1171,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); |
@@ -1204,9 +1211,10 @@ 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( |
+ base::MakeRefCounted<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"); |
@@ -1214,8 +1222,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. |
@@ -1375,9 +1383,10 @@ 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( |
+ base::MakeRefCounted<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); |
@@ -1527,9 +1536,10 @@ 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( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), encountered_form, |
+ base::MakeUnique<MockFormSaver>(), &fetcher)); |
PasswordForm incomplete_form; |
incomplete_form.origin = GURL("http://accounts.google.com/LoginAuth"); |
@@ -1555,16 +1565,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 |
@@ -1706,10 +1716,11 @@ 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( |
- password_manager(), client(), client()->driver(), invalid_action_form, |
- base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
- EXPECT_EQ(0, invalid_manager.DoesManage(valid_action_form, nullptr) & |
+ scoped_refptr<PasswordFormManager> invalid_manager( |
+ base::MakeRefCounted<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) & |
PasswordFormManager::RESULT_ACTION_MATCH); |
} |
@@ -1723,10 +1734,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( |
+ base::MakeRefCounted<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); |
} |
@@ -1739,10 +1751,11 @@ 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( |
- password_manager(), client(), kNoDriver, non_html_form, |
- base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
- EXPECT_EQ(0, non_html_manager.DoesManage(html_form, nullptr) & |
+ scoped_refptr<PasswordFormManager> non_html_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), kNoDriver, non_html_form, |
+ base::MakeUnique<MockFormSaver>(), fake_form_fetcher())); |
+ EXPECT_EQ(0, non_html_manager->DoesManage(html_form, nullptr) & |
PasswordFormManager::RESULT_HTML_ATTRIBUTES_MATCH); |
} |
@@ -1776,16 +1789,18 @@ TEST_F(PasswordFormManagerTest, |
PasswordForm secure_observed_form(*observed_form()); |
secure_observed_form.origin = GURL("https://accounts.google.com/a/LoginAuth"); |
- PasswordFormManager secure_manager( |
- password_manager(), client(), client()->driver(), secure_observed_form, |
- base::MakeUnique<MockFormSaver>(), fake_form_fetcher()); |
+ scoped_refptr<PasswordFormManager> secure_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), |
+ secure_observed_form, 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); |
} |
@@ -1873,9 +1888,10 @@ TEST_F(PasswordFormManagerTest, UploadFormData_NewPassword) { |
// Don't vote for the username field yet. |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *saved_match(), |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *saved_match(), |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
PasswordForm form_to_save(*saved_match()); |
@@ -1888,18 +1904,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( |
+ base::MakeRefCounted<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; |
@@ -1908,7 +1925,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) { |
@@ -1993,9 +2010,10 @@ 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( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), form, |
+ base::MakeUnique<MockFormSaver>(), &fetcher)); |
// Suddenly, the frame and its driver disappear. |
client()->KillDriver(); |
@@ -2073,10 +2091,11 @@ 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( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), |
+ observed_change_password_form, base::MakeUnique<MockFormSaver>(), |
+ &fetcher)); |
autofill::PasswordFormFillData fill_data; |
EXPECT_CALL(*client()->mock_driver(), FillPasswordForm(_)) |
@@ -2084,7 +2103,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); |
} |
@@ -2110,9 +2129,10 @@ 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( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ base::MakeUnique<MockFormSaver>(), &fetcher)); |
fetcher.SetNonFederated({saved_match()}, 0u); |
@@ -2122,29 +2142,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); |
@@ -2175,9 +2195,10 @@ 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( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ base::MakeUnique<MockFormSaver>(), &fetcher)); |
fetcher.SetNonFederated({saved_match()}, 0u); |
@@ -2188,30 +2209,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. |
@@ -2230,21 +2252,22 @@ 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( |
+ base::MakeRefCounted<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); |
} |
@@ -2363,9 +2386,10 @@ 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( |
+ base::MakeRefCounted<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. |
@@ -2373,24 +2397,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); |
@@ -2415,9 +2439,10 @@ 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( |
+ base::MakeRefCounted<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); |
@@ -2426,23 +2451,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); |
@@ -2456,9 +2481,10 @@ 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( |
+ base::MakeRefCounted<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); |
@@ -2467,23 +2493,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); |
@@ -2496,9 +2522,10 @@ 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( |
+ base::MakeRefCounted<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. |
@@ -2506,18 +2533,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); |
@@ -2652,9 +2679,10 @@ 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( |
+ base::MakeRefCounted<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. |
@@ -2662,20 +2690,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; |
@@ -2699,7 +2728,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. |
@@ -2735,14 +2764,15 @@ TEST_F(PasswordFormManagerTest, FormClassifierVoteUpload) { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), form, |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), form, |
+ 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); |
@@ -2754,9 +2784,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(); |
} |
} |
@@ -2772,9 +2802,10 @@ TEST_F(PasswordFormManagerTest, FieldPropertiesMasksUpload) { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), form, |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), form, |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
DCHECK_EQ(3U, form.form_data.fields.size()); |
@@ -2793,9 +2824,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) { |
@@ -2807,9 +2838,10 @@ 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( |
+ base::MakeRefCounted<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 |
@@ -2820,16 +2852,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); |
@@ -2873,9 +2905,10 @@ TEST_F(PasswordFormManagerTest, ProbablyAccountCreationUpload) { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), form, |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), form, |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
PasswordForm form_to_save(form); |
form_to_save.preferred = true; |
@@ -2903,9 +2936,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) { |
@@ -2961,11 +2994,12 @@ TEST_F(PasswordFormManagerTest, RemoveResultsWithWrongScheme_ObservingHTML) { |
observed.scheme = kCorrectScheme; |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), |
- (kCorrectScheme == PasswordForm::SCHEME_HTML ? client()->driver() |
- : nullptr), |
- observed, base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), |
+ (kCorrectScheme == PasswordForm::SCHEME_HTML ? client()->driver() |
+ : nullptr), |
+ observed, base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
PasswordForm match = *saved_match(); |
match.scheme = kCorrectScheme; |
@@ -2974,20 +3008,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); |
} |
} |
} |
@@ -3132,13 +3166,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 |
@@ -3147,17 +3181,18 @@ TEST_F(PasswordFormManagerTest, DropFetcherOnDestruction) { |
TEST_F(PasswordFormManagerTest, GrabFetcher_Same) { |
auto fetcher = base::MakeUnique<MockFormFetcher>(); |
fetcher->Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<MockFormSaver>(), fetcher.get()); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ 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 |
@@ -3189,15 +3224,16 @@ TEST_F(PasswordFormManagerTest, GrabFetcher_Remove) { |
FormFetcher::Consumer* added_consumer = nullptr; |
EXPECT_CALL(old_fetcher, AddConsumer(_)) |
.WillOnce(SaveArg<0>(&added_consumer)); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<MockFormSaver>(), &old_fetcher); |
- EXPECT_EQ(&form_manager, added_consumer); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ 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) { |
@@ -3214,9 +3250,10 @@ TEST_F(PasswordFormManagerTest, UploadSignInForm_WithAutofillTypes) { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
PasswordForm form_to_save(*observed_form()); |
@@ -3229,9 +3266,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}; |
@@ -3251,9 +3288,10 @@ TEST_F(PasswordFormManagerTest, NoUploadsForSubmittedFormWithOnlyOneField) { |
FakeFormFetcher fetcher; |
fetcher.Fetch(); |
- PasswordFormManager form_manager( |
- password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher); |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
+ password_manager(), client(), client()->driver(), *observed_form(), |
+ base::MakeUnique<NiceMock<MockFormSaver>>(), &fetcher)); |
fetcher.SetNonFederated(std::vector<const PasswordForm*>(), 0u); |
PasswordForm form_to_save(*observed_form()); |
@@ -3263,9 +3301,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(); |
} |
TEST_F(PasswordFormManagerTest, |
@@ -3274,12 +3312,12 @@ TEST_F(PasswordFormManagerTest, |
fake_form_fetcher()->set_did_complete_querying_suppressed_forms(false); |
fake_form_fetcher()->Fetch(); |
- std::unique_ptr<PasswordFormManager> form_manager = |
- base::MakeUnique<PasswordFormManager>( |
+ scoped_refptr<PasswordFormManager> form_manager( |
+ base::MakeRefCounted<PasswordFormManager>( |
password_manager(), client(), client()->driver(), *observed_form(), |
- base::MakeUnique<NiceMock<MockFormSaver>>(), fake_form_fetcher()); |
+ 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); |
@@ -3472,12 +3510,12 @@ TEST_F(PasswordFormManagerTest, SuppressedHTTPSFormsHistogram_NotRecordedFor) { |
fetcher.set_did_complete_querying_suppressed_forms(true); |
fetcher.Fetch(); |
- std::unique_ptr<PasswordFormManager> form_manager = |
- base::MakeUnique<PasswordFormManager>( |
+ scoped_refptr<PasswordFormManager> form_manager = |
+ base::MakeRefCounted<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.ExpectUniqueSample( |
"PasswordManager.QueryingSuppressedAccountsFinished", true, 1); |