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 c698f128594d93e0a7788e212b8a933c5d4d8220..f45f191dc78c45ac5e8a20f6a9ae5010fd4f3621 100644 |
--- a/components/password_manager/core/browser/password_manager_unittest.cc |
+++ b/components/password_manager/core/browser/password_manager_unittest.cc |
@@ -588,16 +588,21 @@ TEST_F(PasswordManagerTest, SyncCredentialsNotSaved) { |
} |
// On a successful login with an updated password, |
-// CredentialsFilter::ReportFormLoginSuccess should be called. |
-TEST_F(PasswordManagerTest, ReportFormLoginSuccessCalled) { |
- PasswordForm form(MakeSimpleForm()); |
+// CredentialsFilter::ReportFormLoginSuccess and CredentialsFilter::ShouldSave |
+// should be called. The argument of ShouldSave shold be the submitted form. |
+TEST_F(PasswordManagerTest, ReportFormLoginSuccessAndShouldSaveCalled) { |
+ PasswordForm stored_form(MakeSimpleForm()); |
std::vector<PasswordForm> observed; |
- observed.push_back(form); |
+ PasswordForm observed_form = stored_form; |
+ // Different values of |username_element| needed to ensure that it is the |
+ // |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); |
// Simulate that |form| is already in the store, making this an update. |
EXPECT_CALL(*store_, GetLogins(_, _)) |
- .WillRepeatedly(WithArg<1>(InvokeConsumer(form))); |
+ .WillRepeatedly(WithArg<1>(InvokeConsumer(stored_form))); |
manager()->OnPasswordFormsParsed(&driver_, observed); |
manager()->OnPasswordFormsRendered(&driver_, observed, true); |
@@ -605,11 +610,16 @@ TEST_F(PasswordManagerTest, ReportFormLoginSuccessCalled) { |
EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) |
.WillRepeatedly(Return(true)); |
EXPECT_CALL(client_, GetPrefs()).WillRepeatedly(Return(nullptr)); |
- manager()->ProvisionallySavePassword(form); |
+ |
+ manager()->ProvisionallySavePassword(observed_form); |
// Chrome should recognise the successful login and call |
// ReportFormLoginSuccess. |
EXPECT_CALL(*client_.GetStoreResultFilter(), ReportFormLoginSuccess(_)); |
+ |
+ PasswordForm submitted_form = observed_form; |
+ submitted_form.preferred = true; |
+ EXPECT_CALL(*client_.GetStoreResultFilter(), ShouldSave(submitted_form)); |
EXPECT_CALL(*store_, UpdateLogin(_)); |
observed.clear(); |
manager()->OnPasswordFormsParsed(&driver_, observed); |