Index: chrome/browser/password_manager/native_backend_gnome_x_unittest.cc |
diff --git a/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc b/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc |
index d35ba3337a18d74d31d53b8bb86d2df7e3b500c1..bf648f9d1ba75eef8ab058c840d6476e067fc5fe 100644 |
--- a/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc |
+++ b/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc |
@@ -23,6 +23,8 @@ using autofill::PasswordForm; |
using base::UTF8ToUTF16; |
using base::UTF16ToUTF8; |
using content::BrowserThread; |
+using password_manager::PasswordStoreChange; |
+using password_manager::PasswordStoreChangeList; |
namespace { |
@@ -278,6 +280,33 @@ class MockGnomeKeyringLoader : public GnomeKeyringLoader { |
} |
}; |
+void CheckPasswordChanges(const PasswordStoreChangeList& expected_list, |
+ const PasswordStoreChangeList& actual_list) { |
+ ASSERT_EQ(expected_list.size(), actual_list.size()); |
+ for (size_t i = 0; i < expected_list.size(); ++i) { |
+ EXPECT_EQ(expected_list[i].type(), actual_list[i].type()); |
+ const PasswordForm& expected = expected_list[i].form(); |
+ const PasswordForm& actual = actual_list[i].form(); |
+ |
+ EXPECT_EQ(expected.origin, actual.origin); |
+ EXPECT_EQ(expected.password_value, actual.password_value); |
+ EXPECT_EQ(expected.action, actual.action); |
+ EXPECT_EQ(expected.username_element, actual.username_element); |
+ EXPECT_EQ(expected.username_value, actual.username_value); |
+ EXPECT_EQ(expected.password_element, actual.password_element); |
+ EXPECT_EQ(expected.submit_element, actual.submit_element); |
+ EXPECT_EQ(expected.signon_realm, actual.signon_realm); |
+ EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); |
+ EXPECT_EQ(expected.preferred, actual.preferred); |
+ // We don't check the date created. It varies due to bug in the |
+ // serialization. Integer seconds are saved instead of microseconds. |
+ EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); |
+ EXPECT_EQ(expected.type, actual.type); |
+ EXPECT_EQ(expected.times_used, actual.times_used); |
+ EXPECT_EQ(expected.scheme, actual.scheme); |
+ } |
+} |
+ |
} // anonymous namespace |
class NativeBackendGnomeTest : public testing::Test { |
@@ -306,6 +335,7 @@ class NativeBackendGnomeTest : public testing::Test { |
form_google_.submit_element = UTF8ToUTF16("submit"); |
form_google_.signon_realm = "http://www.google.com/"; |
form_google_.type = PasswordForm::TYPE_GENERATED; |
+ form_google_.date_created = base::Time::Now(); |
form_facebook_.origin = GURL("http://www.facebook.com/"); |
form_facebook_.action = GURL("http://www.facebook.com/login"); |
@@ -315,6 +345,7 @@ class NativeBackendGnomeTest : public testing::Test { |
form_facebook_.password_value = UTF8ToUTF16("b"); |
form_facebook_.submit_element = UTF8ToUTF16("submit"); |
form_facebook_.signon_realm = "http://www.facebook.com/"; |
+ form_facebook_.date_created = base::Time::Now(); |
form_isc_.origin = GURL("http://www.isc.org/"); |
form_isc_.action = GURL("http://www.isc.org/auth"); |
@@ -324,11 +355,13 @@ class NativeBackendGnomeTest : public testing::Test { |
form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); |
form_isc_.submit_element = UTF8ToUTF16("login"); |
form_isc_.signon_realm = "http://www.isc.org/"; |
+ form_isc_.date_created = base::Time::Now(); |
other_auth_.origin = GURL("http://www.example.com/"); |
other_auth_.username_value = UTF8ToUTF16("username"); |
other_auth_.password_value = UTF8ToUTF16("pass"); |
other_auth_.signon_realm = "http://www.example.com/Realm"; |
+ other_auth_.date_created = base::Time::Now(); |
} |
virtual void TearDown() { |
@@ -802,14 +835,27 @@ TEST_F(NativeBackendGnomeTest, AddDuplicateLogin) { |
NativeBackendGnome backend(42); |
backend.Init(); |
- BrowserThread::PostTask( |
+ PasswordStoreChangeList changes; |
+ changes.push_back(PasswordStoreChange(PasswordStoreChange::ADD, |
+ form_google_)); |
+ BrowserThread::PostTaskAndReplyWithResult( |
BrowserThread::DB, FROM_HERE, |
- base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
- base::Unretained(&backend), form_google_)); |
- BrowserThread::PostTask( |
+ base::Bind(&NativeBackendGnome::AddLogin, |
+ base::Unretained(&backend), form_google_), |
+ base::Bind(&CheckPasswordChanges, changes)); |
+ |
+ changes.clear(); |
+ changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, |
+ form_google_)); |
+ form_google_.times_used++; |
+ changes.push_back(PasswordStoreChange(PasswordStoreChange::ADD, |
+ form_google_)); |
+ |
+ BrowserThread::PostTaskAndReplyWithResult( |
BrowserThread::DB, FROM_HERE, |
- base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
- base::Unretained(&backend), form_google_)); |
+ base::Bind(&NativeBackendGnome::AddLogin, |
+ base::Unretained(&backend), form_google_), |
+ base::Bind(&CheckPasswordChanges, changes)); |
RunBothThreads(); |