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 fb045caebfd88632aa1dd1832066ecabf1d95823..5463b048d89e1d571d40fd6ca8b7e45b9386591d 100644 |
--- a/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc |
+++ b/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc |
@@ -324,6 +324,10 @@ class NativeBackendGnomeTest : public testing::Test { |
UPDATE_BY_UPDATELOGIN, |
UPDATE_BY_ADDLOGIN, |
}; |
+ enum RemoveBetweenMethod { // Used in CheckRemoveLoginsBetween(). |
+ CREATED, |
+ SYNCED, |
+ }; |
NativeBackendGnomeTest() |
: ui_thread_(BrowserThread::UI, &message_loop_), |
@@ -645,6 +649,83 @@ class NativeBackendGnomeTest : public testing::Test { |
other_auth_, GURL("http://www.example.com/"), scheme, NULL)); |
} |
+ void CheckRemoveLoginsBetween(RemoveBetweenMethod date_to_test) { |
+ NativeBackendGnome backend(42); |
+ backend.Init(); |
+ |
+ form_google_.date_synced = base::Time(); |
+ form_isc_.date_synced = base::Time(); |
+ form_google_.date_created = base::Time(); |
+ form_isc_.date_created = base::Time(); |
+ base::Time now = base::Time::Now(); |
+ base::Time next_day = now + base::TimeDelta::FromDays(1); |
+ if (date_to_test == CREATED) { |
+ // crbug/374132. Remove the next line once it's fixed. |
+ next_day = base::Time::FromTimeT(next_day.ToTimeT()); |
+ form_google_.date_created = now; |
+ form_isc_.date_created = next_day; |
+ } else { |
+ form_google_.date_synced = now; |
+ form_isc_.date_synced = next_day; |
+ } |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::DB, |
+ FROM_HERE, |
+ base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
+ base::Unretained(&backend), |
+ form_google_)); |
+ BrowserThread::PostTask( |
+ BrowserThread::DB, |
+ FROM_HERE, |
+ base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
+ base::Unretained(&backend), |
+ form_isc_)); |
+ |
+ PasswordStoreChangeList expected_changes; |
+ expected_changes.push_back( |
+ PasswordStoreChange(PasswordStoreChange::REMOVE, form_google_)); |
+ PasswordStoreChangeList changes; |
+ bool (NativeBackendGnome::*method)( |
+ base::Time, base::Time, password_manager::PasswordStoreChangeList*) = |
+ date_to_test == CREATED |
+ ? &NativeBackendGnome::RemoveLoginsCreatedBetween |
+ : &NativeBackendGnome::RemoveLoginsSyncedBetween; |
+ BrowserThread::PostTaskAndReplyWithResult( |
+ BrowserThread::DB, |
+ FROM_HERE, |
+ base::Bind(method, |
+ base::Unretained(&backend), |
+ base::Time(), |
+ next_day, |
+ &changes), |
+ base::Bind( |
+ &CheckPasswordChangesWithResult, &expected_changes, &changes)); |
+ RunBothThreads(); |
+ |
+ EXPECT_EQ(1u, mock_keyring_items.size()); |
+ if (mock_keyring_items.size() > 0) |
+ CheckMockKeyringItem(&mock_keyring_items[0], form_isc_, "chrome-42"); |
+ |
+ // Remove form_isc_. |
+ expected_changes.clear(); |
+ expected_changes.push_back( |
+ PasswordStoreChange(PasswordStoreChange::REMOVE, form_isc_)); |
+ BrowserThread::PostTaskAndReplyWithResult( |
+ BrowserThread::DB, |
+ FROM_HERE, |
+ base::Bind(method, |
+ base::Unretained(&backend), |
+ next_day, |
+ base::Time(), |
+ &changes), |
+ base::Bind( |
+ &CheckPasswordChangesWithResult, &expected_changes, &changes)); |
+ RunBothThreads(); |
+ |
+ EXPECT_EQ(0u, mock_keyring_items.size()); |
+ } |
+ |
base::MessageLoopForUI message_loop_; |
content::TestBrowserThread ui_thread_; |
content::TestBrowserThread db_thread_; |
@@ -955,65 +1036,12 @@ TEST_F(NativeBackendGnomeTest, ListLoginsAppends) { |
CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
} |
-TEST_F(NativeBackendGnomeTest, RemoveLoginsSyncedBetween) { |
- NativeBackendGnome backend(42); |
- backend.Init(); |
- |
- base::Time now = base::Time::Now(); |
- base::Time next_day = now + base::TimeDelta::FromDays(1); |
- form_google_.date_synced = now; |
- form_isc_.date_synced = next_day; |
- form_google_.date_created = base::Time(); |
- form_isc_.date_created = base::Time(); |
- |
- BrowserThread::PostTask( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
- base::Unretained(&backend), |
- form_google_)); |
- BrowserThread::PostTask( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(base::IgnoreResult(&NativeBackendGnome::AddLogin), |
- base::Unretained(&backend), |
- form_isc_)); |
- |
- PasswordStoreChangeList expected_changes; |
- expected_changes.push_back( |
- PasswordStoreChange(PasswordStoreChange::REMOVE, form_google_)); |
- PasswordStoreChangeList changes; |
- BrowserThread::PostTaskAndReplyWithResult( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(&NativeBackendGnome::RemoveLoginsSyncedBetween, |
- base::Unretained(&backend), |
- base::Time(), |
- next_day, |
- &changes), |
- base::Bind(&CheckPasswordChangesWithResult, &expected_changes, &changes)); |
- RunBothThreads(); |
- |
- EXPECT_EQ(1u, mock_keyring_items.size()); |
- if (mock_keyring_items.size() > 0) |
- CheckMockKeyringItem(&mock_keyring_items[0], form_isc_, "chrome-42"); |
- |
- // Remove form_isc_. |
- expected_changes.clear(); |
- expected_changes.push_back( |
- PasswordStoreChange(PasswordStoreChange::REMOVE, form_isc_)); |
- BrowserThread::PostTaskAndReplyWithResult( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(&NativeBackendGnome::RemoveLoginsSyncedBetween, |
- base::Unretained(&backend), |
- next_day, |
- base::Time(), |
- &changes), |
- base::Bind(&CheckPasswordChangesWithResult, &expected_changes, &changes)); |
- RunBothThreads(); |
+TEST_F(NativeBackendGnomeTest, RemoveLoginsCreatedBetween) { |
+ CheckRemoveLoginsBetween(CREATED); |
+} |
- EXPECT_EQ(0u, mock_keyring_items.size()); |
+TEST_F(NativeBackendGnomeTest, RemoveLoginsSyncedBetween) { |
+ CheckRemoveLoginsBetween(SYNCED); |
} |
// TODO(mdm): add more basic tests here at some point. |