Index: chrome/browser/password_manager/native_backend_libsecret_unittest.cc |
diff --git a/chrome/browser/password_manager/native_backend_libsecret_unittest.cc b/chrome/browser/password_manager/native_backend_libsecret_unittest.cc |
index 88e63030e776f3f0fd164b2b6dd1c7ebc5652189..b7ae4be0ab034cf0484915a62bd5396cf6368b0e 100644 |
--- a/chrome/browser/password_manager/native_backend_libsecret_unittest.cc |
+++ b/chrome/browser/password_manager/native_backend_libsecret_unittest.cc |
@@ -48,6 +48,10 @@ struct MockSecretItem { |
delete value; |
g_hash_table_destroy(attributes); |
} |
+ |
+ void RemoveAttribute(const char* keyname) { |
+ g_hash_table_remove(attributes, keyname); |
+ } |
}; |
bool Matches(MockSecretItem* item, GHashTable* query) { |
@@ -818,4 +822,24 @@ TEST_F(NativeBackendLibsecretTest, RemoveLoginsSyncedBetween) { |
CheckRemoveLoginsBetween(SYNCED); |
} |
+TEST_F(NativeBackendLibsecretTest, SomeKeyringAttributesAreMissing) { |
+ // Absent attributes should be filled with default values. |
+ NativeBackendLibsecret backend(42); |
+ |
+ backend.AddLogin(form_google_); |
+ |
+ EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
+ // Remove a string attribute. |
+ global_mock_libsecret_items[0]->RemoveAttribute("avatar_url"); |
+ // Remove an integer attribute. |
+ global_mock_libsecret_items[0]->RemoveAttribute("ssl_valid"); |
+ |
+ ScopedVector<autofill::PasswordForm> form_list; |
+ backend.GetAutofillableLogins(&form_list); |
+ |
+ EXPECT_EQ(1u, form_list.size()); |
+ EXPECT_EQ(GURL(""), form_list[0]->avatar_url); |
+ EXPECT_FALSE(form_list[0]->ssl_valid); |
+} |
+ |
// TODO(mdm): add more basic tests here at some point. |