Index: components/password_manager/core/browser/login_database_unittest.cc |
diff --git a/components/password_manager/core/browser/login_database_unittest.cc b/components/password_manager/core/browser/login_database_unittest.cc |
index 1039746f9cdfba080edbb429fc2050c9e70ebe7f..52c4c0dd2cd03f8955b28be37334c6fa9d694902 100644 |
--- a/components/password_manager/core/browser/login_database_unittest.cc |
+++ b/components/password_manager/core/browser/login_database_unittest.cc |
@@ -29,6 +29,11 @@ PasswordStoreChangeList AddChangeForForm(const PasswordForm& form) { |
form)); |
} |
+PasswordStoreChangeList UpdateChangeForForm(const PasswordForm& form) { |
+ return PasswordStoreChangeList(1, PasswordStoreChange( |
+ PasswordStoreChange::UPDATE, form)); |
+} |
+ |
} // namespace |
// Serialization routines for vectors implemented in login_database.cc. |
@@ -214,9 +219,7 @@ TEST_F(LoginDatabaseTest, Logins) { |
// We update, and check to make sure it matches the |
// old form, and there is only one record. |
- int rows_changed = 0; |
- EXPECT_TRUE(db_.UpdateLogin(form6, &rows_changed)); |
- EXPECT_EQ(1, rows_changed); |
+ EXPECT_EQ(UpdateChangeForForm(form6), db_.UpdateLogin(form6)); |
// matches |
EXPECT_TRUE(db_.GetLogins(form5, &result)); |
EXPECT_EQ(1U, result.size()); |
@@ -748,7 +751,8 @@ TEST_F(LoginDatabaseTest, UpdateIncompleteCredentials) { |
completed_form.username_element = encountered_form.username_element; |
completed_form.password_element = encountered_form.password_element; |
completed_form.submit_element = encountered_form.submit_element; |
- EXPECT_TRUE(db_.UpdateLogin(completed_form, NULL)); |
+ EXPECT_EQ(AddChangeForForm(completed_form), db_.AddLogin(completed_form)); |
+ EXPECT_TRUE(db_.RemoveLogin(incomplete_form)); |
// Get matches for encountered_form again. |
EXPECT_TRUE(db_.GetLogins(encountered_form, &result)); |
@@ -787,6 +791,9 @@ TEST_F(LoginDatabaseTest, UpdateOverlappingCredentials) { |
complete_form.username_element = ASCIIToUTF16("username_element"); |
complete_form.password_element = ASCIIToUTF16("password_element"); |
complete_form.submit_element = ASCIIToUTF16("submit"); |
+ |
+ // An update fails because the primary key for |complete_form| is different. |
+ EXPECT_EQ(PasswordStoreChangeList(), db_.UpdateLogin(complete_form)); |
EXPECT_EQ(AddChangeForForm(complete_form), db_.AddLogin(complete_form)); |
// Make sure both passwords exist. |
@@ -797,19 +804,22 @@ TEST_F(LoginDatabaseTest, UpdateOverlappingCredentials) { |
// Simulate the user changing their password. |
complete_form.password_value = ASCIIToUTF16("new_password"); |
- EXPECT_TRUE(db_.UpdateLogin(complete_form, NULL)); |
+ EXPECT_EQ(UpdateChangeForForm(complete_form), db_.UpdateLogin(complete_form)); |
- // Only one updated form should exist now. |
+ // Both still exist now. |
EXPECT_TRUE(db_.GetAutofillableLogins(&result.get())); |
- ASSERT_EQ(1U, result.size()); |
+ ASSERT_EQ(2U, result.size()); |
- PasswordForm expected_form(complete_form); |
#if defined(OS_MACOSX) && !defined(OS_IOS) |
// On Mac, passwords are not stored in login database, instead they're in |
// the keychain. |
- expected_form.password_value.clear(); |
+ complete_form.password_value.clear(); |
+ incomplete_form.password_value.clear(); |
#endif // OS_MACOSX && !OS_IOS |
- EXPECT_EQ(expected_form, *result[0]); |
+ if (result[0]->username_element.empty()) |
+ std::swap(result[0], result[1]); |
+ EXPECT_EQ(complete_form, *result[0]); |
+ EXPECT_EQ(incomplete_form, *result[1]); |
} |
TEST_F(LoginDatabaseTest, DoubleAdd) { |