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 b1093c9bcd28b69aaa435e119d221632a00008a4..0cb6d8277fb3c50e122816026e9dbd6110975d7d 100644 |
--- a/components/password_manager/core/browser/login_database_unittest.cc |
+++ b/components/password_manager/core/browser/login_database_unittest.cc |
@@ -901,6 +901,45 @@ TEST_F(LoginDatabaseTest, DoubleAdd) { |
EXPECT_EQ(list, db_.AddLogin(form)); |
} |
+TEST_F(LoginDatabaseTest, UpdateLogin) { |
+ PasswordForm form; |
+ form.origin = GURL("http://accounts.google.com/LoginAuth"); |
+ form.signon_realm = "http://accounts.google.com/"; |
+ form.username_value = ASCIIToUTF16("my_username"); |
+ form.password_value = ASCIIToUTF16("my_password"); |
+ form.ssl_valid = false; |
+ form.preferred = true; |
+ form.blacklisted_by_user = false; |
+ form.scheme = PasswordForm::SCHEME_HTML; |
+ EXPECT_EQ(AddChangeForForm(form), db_.AddLogin(form)); |
+ |
+ form.action = GURL("http://accounts.google.com/login"); |
+ form.password_value = ASCIIToUTF16("my_new_password"); |
+ form.ssl_valid = true; |
+ form.preferred = false; |
+ form.other_possible_usernames.push_back(ASCIIToUTF16("my_new_username")); |
+ form.times_used = 20; |
+ form.submit_element = ASCIIToUTF16("submit_element"); |
+ form.date_synced = base::Time::Now(); |
+ form.date_created = base::Time::Now() - base::TimeDelta::FromDays(1); |
+ // Remove this line after crbug/374132 is fixed. |
+ form.date_created = base::Time::FromTimeT(form.date_created.ToTimeT()); |
+ form.blacklisted_by_user = true; |
+ form.scheme = PasswordForm::SCHEME_BASIC; |
+ form.type = PasswordForm::TYPE_GENERATED; |
+ EXPECT_EQ(UpdateChangeForForm(form), db_.UpdateLogin(form)); |
+ |
+ ScopedVector<autofill::PasswordForm> result; |
+ EXPECT_TRUE(db_.GetLogins(form, &result.get())); |
+ ASSERT_EQ(1U, result.size()); |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+ // On Mac, passwords are not stored in login database, instead they're in |
+ // the keychain. |
+ form.password_value.clear(); |
+#endif // OS_MACOSX && !OS_IOS |
+ EXPECT_EQ(form, *result[0]); |
+} |
+ |
#if defined(OS_POSIX) |
// Only the current user has permission to read the database. |
// |