Chromium Code Reviews| Index: components/password_manager/core/browser/password_manager_unittest.cc |
| diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc |
| index d0895e8c8b57054d7f483067314842dc94073955..4c39271630dca12f02a912dc8b3da4db4bcb118f 100644 |
| --- a/components/password_manager/core/browser/password_manager_unittest.cc |
| +++ b/components/password_manager/core/browser/password_manager_unittest.cc |
| @@ -61,9 +61,8 @@ class MockPasswordManagerClient : public StubPasswordManagerClient { |
| MOCK_CONST_METHOD0(IsSavingAndFillingEnabledForCurrentPage, bool()); |
| MOCK_CONST_METHOD0(DidLastPageLoadEncounterSSLErrors, bool()); |
| MOCK_CONST_METHOD0(GetPasswordStore, PasswordStore*()); |
| - // The code inside EXPECT_CALL for PromptUserToSaveOrUpdatePasswordPtr owns |
| - // the PasswordFormManager* argument. |
| - MOCK_METHOD1(PromptUserToSaveOrUpdatePasswordPtr, void(PasswordFormManager*)); |
| + MOCK_METHOD2(PromptUserToSaveOrUpdatePassword, |
| + bool(scoped_refptr<PasswordFormManager>, bool)); |
| MOCK_METHOD1(NotifySuccessfulLoginWithExistingPassword, |
| void(const autofill::PasswordForm&)); |
| MOCK_METHOD0(AutomaticPasswordSaveIndicator, void()); |
| @@ -72,15 +71,8 @@ class MockPasswordManagerClient : public StubPasswordManagerClient { |
| MOCK_METHOD0(GetDriver, PasswordManagerDriver*()); |
| MOCK_CONST_METHOD0(GetStoreResultFilter, const MockStoreResultFilter*()); |
| - // Workaround for std::unique_ptr<> lacking a copy constructor. |
| - bool PromptUserToSaveOrUpdatePassword( |
| - std::unique_ptr<PasswordFormManager> manager, |
| - bool update_password) override { |
| - PromptUserToSaveOrUpdatePasswordPtr(manager.release()); |
| - return false; |
| - } |
| void AutomaticPasswordSave( |
| - std::unique_ptr<PasswordFormManager> manager) override { |
| + scoped_refptr<PasswordFormManager> manager) override { |
| AutomaticPasswordSaveIndicator(); |
| } |
| @@ -110,8 +102,6 @@ ACTION(InvokeEmptyConsumerWithForms) { |
| arg0->OnGetPasswordStoreResults(std::vector<std::unique_ptr<PasswordForm>>()); |
| } |
| -ACTION_P(SaveToScopedPtr, scoped) { scoped->reset(arg0); } |
| - |
| } // namespace |
| class PasswordManagerTest : public testing::Test { |
| @@ -271,9 +261,10 @@ TEST_F(PasswordManagerTest, FormSubmitWithOnlyNewPasswordField) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
|
vasilii
2017/05/29 13:15:49
No need for WithArg<0>. Maybe it will work without
kolos1
2017/05/29 15:47:06
WithArg is not needed, but w/o "Return(false)" the
|
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -313,7 +304,7 @@ TEST_F(PasswordManagerTest, GeneratedPasswordFormSubmitEmptyStore) { |
| // consent by using the generated password. The form should be saved once |
| // navigation occurs. The client will be informed that automatic saving has |
| // occured. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| PasswordForm form_to_save; |
| EXPECT_CALL(*store_, AddLogin(_)).WillOnce(SaveArg<0>(&form_to_save)); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()); |
| @@ -349,9 +340,10 @@ TEST_F(PasswordManagerTest, FormSubmitNoGoodMatch) { |
| OnPasswordFormSubmitted(form); |
| // We still expect an add, since we didn't have a good match. |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -375,7 +367,7 @@ TEST_F(PasswordManagerTest, FormSeenThenLeftPage) { |
| // No message from the renderer that a password was submitted. No |
| // expected calls. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| observed.clear(); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| @@ -397,9 +389,10 @@ TEST_F(PasswordManagerTest, FormSubmit) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| observed.clear(); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| @@ -446,9 +439,10 @@ TEST_F(PasswordManagerTest, FormSubmitWithFormOnPreviousPage) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(second_form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Navigation after form submit, no forms appear. |
| observed.clear(); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| @@ -477,9 +471,10 @@ TEST_F(PasswordManagerTest, FormSubmitInvisibleLogin) { |
| OnPasswordFormSubmitted(form); |
| // Expect info bar to appear: |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // The form reappears, but is not visible in the layout: |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| @@ -551,7 +546,7 @@ TEST_F(PasswordManagerTest, PasswordFormReappearance) { |
| observed.push_back(MakeTwitterFailedLoginForm()); |
| // A PasswordForm appears, and is visible in the layout: |
| // No expected calls to the PasswordStore... |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()).Times(0); |
| EXPECT_CALL(*store_, AddLogin(_)).Times(0); |
| EXPECT_CALL(*store_, UpdateLogin(_)).Times(0); |
| @@ -571,7 +566,7 @@ TEST_F(PasswordManagerTest, SyncCredentialsNotSaved) { |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| // User should not be prompted and password should not be saved. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(*store_, AddLogin(_)).Times(0); |
| // Prefs are needed for failure logging about sync credentials. |
| EXPECT_CALL(client_, GetPrefs()).WillRepeatedly(Return(nullptr)); |
| @@ -598,7 +593,7 @@ TEST_F(PasswordManagerTest, ReportFormLoginSuccessAndShouldSaveCalled) { |
| // |observed_form| and not the |stored_form| what is passed to ShouldSave. |
| observed_form.username_element += ASCIIToUTF16("1"); |
| observed.push_back(observed_form); |
| - EXPECT_CALL(driver_, FillPasswordForm(_)).Times(2); |
| + EXPECT_CALL(driver_, FillPasswordForm(_)).Times(3); |
|
vasilii
2017/05/29 13:15:49
What has changed?
kolos1
2017/05/29 15:47:06
In |manager()->ProvisionallySavePassword(observed_
|
| // Simulate that |form| is already in the store, making this an update. |
| EXPECT_CALL(*store_, GetLogins(_, _)) |
| .WillRepeatedly(WithArg<1>(InvokeConsumer(stored_form))); |
| @@ -684,7 +679,7 @@ TEST_F(PasswordManagerTest, SyncCredentialsDroppedWhenObsolete) { |
| // Because the user successfully uses an updated sync password, Chrome should |
| // remove the obsolete copy of it. |
| EXPECT_CALL(*store_, RemoveLogin(form)); |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| observed.clear(); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| @@ -721,7 +716,7 @@ TEST_F(PasswordManagerTest, |
| first_form.origin = GURL("http://www.xda-developers.com/"); |
| first_form.action = GURL("http://forum.xda-developers.com/login.php"); |
| - // |second_form|'s action differs only with it's scheme i.e. *https://*. |
| + // |second_form|'s action differs only with it's scheme i.e. "https://". |
| PasswordForm second_form(first_form); |
| second_form.action = GURL("https://forum.xda-developers.com/login.php"); |
| @@ -742,7 +737,7 @@ TEST_F(PasswordManagerTest, |
| observed.push_back(second_form); |
| // Verify that no prompt to save the password is shown. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| } |
| @@ -814,9 +809,10 @@ TEST_F(PasswordManagerTest, AttemptedSavePasswordSameOriginInsecureScheme) { |
| // Make sure |PromptUserToSaveOrUpdatePassword| gets called, and the resulting |
| // form manager is saved. |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| EXPECT_CALL(client_, GetMainFrameURL()) |
| .WillRepeatedly(ReturnRef(insecure_form.origin)); |
| @@ -829,7 +825,7 @@ TEST_F(PasswordManagerTest, AttemptedSavePasswordSameOriginInsecureScheme) { |
| // Expect no further calls to |ProptUserToSaveOrUpdatePassword| due to |
| // insecure origin. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| // Trigger call to |ProvisionalSavePassword| by rendering a page without |
| // forms. |
| @@ -865,9 +861,10 @@ TEST_F(PasswordManagerTest, DoNotSaveWithEmptyNewPasswordAndNonemptyPassword) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the login to complete successfully. |
| observed.clear(); |
| @@ -898,9 +895,10 @@ TEST_F(PasswordManagerTest, FormSubmitWithOnlyPasswordField) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -941,19 +939,24 @@ TEST_F(PasswordManagerTest, InPageNavigation) { |
| PasswordForm form(MakeSimpleForm()); |
| observed.push_back(form); |
| EXPECT_CALL(*store_, GetLogins(_, _)) |
| - .WillOnce(WithArg<1>(InvokeEmptyConsumerWithForms())); |
| + .Times(2) |
|
vasilii
2017/05/29 13:15:49
Why twice?
kolos1
2017/05/29 15:47:06
We don't remove the matched PasswordFormManager fr
|
| + .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms())); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) |
| .WillRepeatedly(Return(true)); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| manager()->OnInPageNavigation(&driver_, form); |
| + // Checks |form_manager_to_save| is still in |pending_login_managers_|. |
| + EXPECT_EQ(1u, manager()->pending_login_managers().size()); |
| + |
| // Simulate saving the form, as if the info bar was accepted. |
| EXPECT_CALL(*store_, AddLogin(FormMatches(form))); |
| ASSERT_TRUE(form_manager_to_save); |
| @@ -980,9 +983,10 @@ TEST_F(PasswordManagerTest, InPageNavigationBlacklistedSite) { |
| // Prefs are needed for failure logging about blacklisting. |
| EXPECT_CALL(client_, GetPrefs()).WillRepeatedly(Return(nullptr)); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| manager()->OnInPageNavigation(&driver_, form); |
| EXPECT_TRUE(form_manager_to_save->IsBlacklisted()); |
| @@ -1015,9 +1019,10 @@ TEST_F(PasswordManagerTest, SavingSignupForms_NoHTMLMatch) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(submitted_form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -1068,9 +1073,10 @@ TEST_F(PasswordManagerTest, SavingSignupForms_NoActionMatch) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(submitted_form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -1120,9 +1126,10 @@ TEST_F(PasswordManagerTest, FormSubmittedChangedWithAutofillResponse) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -1153,7 +1160,7 @@ TEST_F(PasswordManagerTest, FormSubmittedUnchangedNotifiesClient) { |
| autofill::PasswordForm updated_form; |
| autofill::PasswordForm notified_form; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(*store_, UpdateLogin(_)).WillOnce(SaveArg<0>(&updated_form)); |
| EXPECT_CALL(client_, NotifySuccessfulLoginWithExistingPassword(_)) |
| .WillOnce(SaveArg<0>(¬ified_form)); |
| @@ -1193,9 +1200,10 @@ TEST_F(PasswordManagerTest, SaveFormFetchedAfterSubmit) { |
| static_cast<FormFetcherImpl*>(form_manager->form_fetcher()) |
| ->OnGetPasswordStoreResults(std::vector<std::unique_ptr<PasswordForm>>()); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| // Now the password manager waits for the navigation to complete. |
| observed.clear(); |
| @@ -1222,7 +1230,7 @@ TEST_F(PasswordManagerTest, PasswordGeneration_FailedSubmission) { |
| manager()->SetHasGeneratedPasswordForForm(&driver_, form, true); |
| // Do not save generated password when the password form reappears. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(*store_, AddLogin(_)).Times(0); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()).Times(0); |
| @@ -1254,7 +1262,7 @@ TEST_F(PasswordManagerTest, PasswordGenerationPasswordEdited_FailedSubmission) { |
| OnPasswordFormSubmitted(form); |
| // Do not save generated password when the password form reappears. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(*store_, AddLogin(_)).Times(0); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()).Times(0); |
| @@ -1288,7 +1296,7 @@ TEST_F(PasswordManagerTest, |
| OnPasswordFormSubmitted(form); |
| // No infobar or prompt is shown if submission fails. |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()).Times(0); |
| // Simulate submission failing, with the same form being visible after |
| @@ -1320,9 +1328,9 @@ TEST_F(PasswordManagerTest, |
| OnPasswordFormSubmitted(form); |
| // Verify that a normal prompt is shown instead of the force saving UI. |
| - std::unique_ptr<PasswordFormManager> form_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save))); |
| + scoped_refptr<PasswordFormManager> form_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce(DoAll(WithArg<0>(SaveArg<0>(&form_to_save)), Return(false))); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()).Times(0); |
| // Simulate a successful submission. |
| @@ -1350,7 +1358,7 @@ TEST_F(PasswordManagerTest, PasswordGenerationUsernameChanged) { |
| form.username_value = ASCIIToUTF16("new_username"); |
| OnPasswordFormSubmitted(form); |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| PasswordForm form_to_save; |
| EXPECT_CALL(*store_, AddLogin(_)).WillOnce(SaveArg<0>(&form_to_save)); |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()); |
| @@ -1413,12 +1421,13 @@ TEST_F(PasswordManagerTest, PasswordGenerationPresavePasswordAndLogin) { |
| .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms())); |
| EXPECT_CALL(*store_, GetLoginsForSameOrganizationName(_, _)); |
| } |
| - std::unique_ptr<PasswordFormManager> form_manager; |
| + scoped_refptr<PasswordFormManager> form_manager; |
| if (found_matched_logins_in_store) { |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager))); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager)), Return(false))); |
| } else { |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| } |
| EXPECT_CALL(client_, AutomaticPasswordSaveIndicator()) |
| .Times(found_matched_logins_in_store ? 0 : 1); |
| @@ -1485,11 +1494,12 @@ TEST_F(PasswordManagerTest, ForceSavingPasswords) { |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) |
| .WillRepeatedly(Return(true)); |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| manager()->OnPasswordFormForceSaveRequested(&driver_, form); |
| ASSERT_TRUE(form_manager_to_save); |
| EXPECT_EQ(form.password_value, |
| @@ -1514,7 +1524,7 @@ TEST_F(PasswordManagerTest, ForceSavingPasswords_Empty) { |
| EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) |
| .WillRepeatedly(Return(true)); |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| manager()->OnPasswordFormForceSaveRequested(&driver_, empty_password_form); |
| } |
| @@ -1555,7 +1565,7 @@ TEST_F(PasswordManagerTest, DropFormManagers) { |
| .WillRepeatedly(Return(true)); |
| OnPasswordFormSubmitted(form); |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| observed.clear(); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |
| @@ -1591,7 +1601,7 @@ TEST_F(PasswordManagerTest, AutofillingOfAffiliatedCredentials) { |
| PasswordForm saved_form; |
| PasswordForm saved_notified_form; |
| EXPECT_CALL(*store_, UpdateLogin(_)).WillOnce(SaveArg<0>(&saved_form)); |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0); |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)).Times(0); |
| EXPECT_CALL(client_, NotifySuccessfulLoginWithExistingPassword(_)) |
| .WillOnce(SaveArg<0>(&saved_notified_form)); |
| EXPECT_CALL(*store_, AddLogin(_)).Times(0); |
| @@ -1629,9 +1639,10 @@ TEST_F(PasswordManagerTest, UpdatePasswordOfAffiliatedCredential) { |
| filled_form.password_value = ASCIIToUTF16("new_password"); |
| OnPasswordFormSubmitted(filled_form); |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| observed_forms.clear(); |
| manager()->OnPasswordFormsParsed(&driver_, observed_forms); |
| @@ -1680,9 +1691,10 @@ TEST_F(PasswordManagerTest, ClearedFieldsSuccessCriteria) { |
| observed[0].new_password_value.clear(); |
| // Check success of the submission. |
| - std::unique_ptr<PasswordFormManager> form_manager_to_save; |
| - EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)) |
| - .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); |
| + scoped_refptr<PasswordFormManager> form_manager_to_save; |
| + EXPECT_CALL(client_, PromptUserToSaveOrUpdatePassword(_, _)) |
| + .WillOnce( |
| + DoAll(WithArg<0>(SaveArg<0>(&form_manager_to_save)), Return(false))); |
| manager()->OnPasswordFormsParsed(&driver_, observed); |
| manager()->OnPasswordFormsRendered(&driver_, observed, true); |