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 603b5457a03de0b402923f2e4b99ba23a62b4019..c0687dedba0c4ced1aa27e89f970ca3fa7b4e94d 100644 |
--- a/chrome/browser/password_manager/native_backend_libsecret_unittest.cc |
+++ b/chrome/browser/password_manager/native_backend_libsecret_unittest.cc |
@@ -79,15 +79,9 @@ bool IsStringAttribute(const SecretSchema* schema, const std::string& name) { |
} |
// The list of all libsecret items we have stored. |
-std::vector<MockSecretItem*> global_mock_libsecret_items; |
+ScopedVector<MockSecretItem>* global_mock_libsecret_items; |
bool global_mock_libsecret_reject_local_ids = false; |
-void ClearMockObjects() { |
- for (size_t i = 0; i < global_mock_libsecret_items.size(); ++i) |
- delete global_mock_libsecret_items[i]; |
- global_mock_libsecret_items.clear(); |
-} |
- |
gboolean mock_secret_password_store_sync(const SecretSchema* schema, |
const gchar* collection, |
const gchar* label, |
@@ -116,7 +110,7 @@ gboolean mock_secret_password_store_sync(const SecretSchema* schema, |
va_end(ap); |
MockSecretValue* secret_value = new MockSecretValue(g_strdup(password)); |
MockSecretItem* item = new MockSecretItem(secret_value, attributes); |
- global_mock_libsecret_items.push_back(item); |
+ global_mock_libsecret_items->push_back(item); |
return true; |
} |
@@ -127,9 +121,9 @@ GList* mock_secret_service_search_sync(SecretService* service, |
GCancellable* cancellable, |
GError** error) { |
GList* result = nullptr; |
- for (uint32_t i = 0; i < global_mock_libsecret_items.size(); ++i) { |
- if (Matches(global_mock_libsecret_items[i], attributes)) |
- result = g_list_append(result, global_mock_libsecret_items[i]); |
+ for (MockSecretItem* item : *global_mock_libsecret_items) { |
+ if (Matches(item, attributes)) |
+ result = g_list_append(result, item); |
} |
return result; |
} |
@@ -157,11 +151,10 @@ gboolean mock_secret_password_clear_sync(const SecretSchema* schema, |
g_hash_table_insert(attributes, g_strdup(name), value); |
} |
va_end(ap); |
- for (uint32_t i = 0; i < global_mock_libsecret_items.size();) |
- if (Matches(global_mock_libsecret_items[i], attributes)) { |
- delete global_mock_libsecret_items[i]; |
- global_mock_libsecret_items.erase(global_mock_libsecret_items.begin() + |
- i); |
+ for (uint32_t i = 0; i < global_mock_libsecret_items->size();) |
+ if (Matches((*global_mock_libsecret_items)[i], attributes)) { |
+ global_mock_libsecret_items->erase(global_mock_libsecret_items->begin() + |
+ i); |
} else { |
++i; |
} |
@@ -212,7 +205,7 @@ class MockLibsecretLoader : public LibsecretLoader { |
(decltype(&::secret_value_unref)) & mock_secret_value_unref; |
libsecret_loaded = true; |
// Reset the state of the mock library. |
- ClearMockObjects(); |
+ global_mock_libsecret_items->clear(); |
global_mock_libsecret_reject_local_ids = false; |
return true; |
} |
@@ -251,13 +244,6 @@ void CheckPasswordChanges(const PasswordStoreChangeList& expected_list, |
} |
} |
-void CheckPasswordChangesWithResult(const PasswordStoreChangeList* expected, |
- const PasswordStoreChangeList* actual, |
- bool result) { |
- EXPECT_TRUE(result); |
- CheckPasswordChanges(*expected, *actual); |
-} |
- |
} // anonymous namespace |
class NativeBackendLibsecretTest : public testing::Test { |
@@ -274,6 +260,9 @@ class NativeBackendLibsecretTest : public testing::Test { |
NativeBackendLibsecretTest() {} |
void SetUp() override { |
+ ASSERT_FALSE(global_mock_libsecret_items); |
+ global_mock_libsecret_items = &mock_libsecret_items_; |
+ |
ASSERT_TRUE(MockLibsecretLoader::LoadMockLibsecret()); |
form_google_.origin = GURL("http://www.google.com/"); |
@@ -332,7 +321,8 @@ class NativeBackendLibsecretTest : public testing::Test { |
base::MessageLoop::current()->PostTask(FROM_HERE, |
base::MessageLoop::QuitClosure()); |
base::MessageLoop::current()->Run(); |
- ClearMockObjects(); |
+ ASSERT_TRUE(global_mock_libsecret_items); |
+ global_mock_libsecret_items = nullptr; |
} |
void RunUIThread() { base::MessageLoop::current()->Run(); } |
@@ -422,11 +412,11 @@ class NativeBackendLibsecretTest : public testing::Test { |
ScopedVector<autofill::PasswordForm> form_list; |
backend.GetLogins(target_form, &form_list); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], credentials, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], credentials, |
"chrome-321"); |
- ClearMockObjects(); |
+ global_mock_libsecret_items->clear(); |
if (form_list.empty()) |
return false; |
@@ -454,7 +444,7 @@ class NativeBackendLibsecretTest : public testing::Test { |
ScopedVector<autofill::PasswordForm> form_list; |
backend.GetLogins(m_facebook_lookup, &form_list); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
EXPECT_EQ(1u, form_list.size()); |
PasswordForm m_facebook = *form_list[0]; |
form_list.clear(); |
@@ -463,7 +453,7 @@ class NativeBackendLibsecretTest : public testing::Test { |
// Add the PSL-matched copy to saved logins. |
backend.AddLogin(m_facebook); |
- EXPECT_EQ(2u, global_mock_libsecret_items.size()); |
+ EXPECT_EQ(2u, global_mock_libsecret_items->size()); |
// Update www.facebook.com login. |
PasswordForm new_facebook(form_facebook_); |
@@ -481,7 +471,7 @@ class NativeBackendLibsecretTest : public testing::Test { |
break; |
} |
- EXPECT_EQ(2u, global_mock_libsecret_items.size()); |
+ EXPECT_EQ(2u, global_mock_libsecret_items->size()); |
// Check that m.facebook.com login was not modified by the update. |
backend.GetLogins(m_facebook_lookup, &form_list); |
@@ -560,13 +550,13 @@ class NativeBackendLibsecretTest : public testing::Test { |
? &NativeBackendLibsecret::RemoveLoginsCreatedBetween |
: &NativeBackendLibsecret::RemoveLoginsSyncedBetween; |
- bool result = base::Bind(method, base::Unretained(&backend), base::Time(), |
- next_day, &changes).Run(); |
- CheckPasswordChangesWithResult(&expected_changes, &changes, result); |
+ EXPECT_TRUE(base::Bind(method, base::Unretained(&backend), base::Time(), |
+ next_day, &changes).Run()); |
+ CheckPasswordChanges(expected_changes, changes); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_isc_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty() > 0) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_isc_, |
"chrome-42"); |
// Remove form_isc_. |
@@ -574,11 +564,11 @@ class NativeBackendLibsecretTest : public testing::Test { |
expected_changes.push_back( |
PasswordStoreChange(PasswordStoreChange::REMOVE, form_isc_)); |
- result = base::Bind(method, base::Unretained(&backend), next_day, |
- base::Time(), &changes).Run(); |
- CheckPasswordChangesWithResult(&expected_changes, &changes, result); |
+ EXPECT_TRUE(base::Bind(method, base::Unretained(&backend), next_day, |
+ base::Time(), &changes).Run()); |
+ CheckPasswordChanges(expected_changes, changes); |
- EXPECT_EQ(0u, global_mock_libsecret_items.size()); |
+ EXPECT_TRUE(global_mock_libsecret_items->empty()); |
} |
base::MessageLoopForUI message_loop_; |
@@ -588,6 +578,8 @@ class NativeBackendLibsecretTest : public testing::Test { |
PasswordForm form_facebook_; |
PasswordForm form_isc_; |
PasswordForm other_auth_; |
+ |
+ ScopedVector<MockSecretItem> mock_libsecret_items_; |
}; |
TEST_F(NativeBackendLibsecretTest, BasicAddLogin) { |
@@ -595,9 +587,9 @@ TEST_F(NativeBackendLibsecretTest, BasicAddLogin) { |
backend.AddLogin(form_google_); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
} |
@@ -613,9 +605,9 @@ TEST_F(NativeBackendLibsecretTest, BasicListLogins) { |
EXPECT_EQ(1u, form_list.size()); |
form_list.clear(); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
} |
@@ -670,9 +662,9 @@ TEST_F(NativeBackendLibsecretTest, BasicUpdateLogin) { |
new_form_google.times_used = 1; |
new_form_google.action = GURL("http://www.google.com/different/login"); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
// Update login |
@@ -682,9 +674,9 @@ TEST_F(NativeBackendLibsecretTest, BasicUpdateLogin) { |
ASSERT_EQ(1u, changes.size()); |
EXPECT_EQ(PasswordStoreChange::UPDATE, changes.front().type()); |
EXPECT_EQ(new_form_google, changes.front().form()); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], new_form_google, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], new_form_google, |
"chrome-42"); |
} |
@@ -693,14 +685,14 @@ TEST_F(NativeBackendLibsecretTest, BasicRemoveLogin) { |
backend.AddLogin(form_google_); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
backend.RemoveLogin(form_google_); |
- EXPECT_EQ(0u, global_mock_libsecret_items.size()); |
+ EXPECT_TRUE(global_mock_libsecret_items->empty()); |
} |
// Verify fix for http://crbug.com/408783. |
@@ -709,9 +701,9 @@ TEST_F(NativeBackendLibsecretTest, RemoveLoginActionMismatch) { |
backend.AddLogin(form_google_); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
// Action url match not required for removal. |
@@ -719,7 +711,7 @@ TEST_F(NativeBackendLibsecretTest, RemoveLoginActionMismatch) { |
backend.RemoveLogin(form_google_); |
- EXPECT_EQ(0u, global_mock_libsecret_items.size()); |
+ EXPECT_TRUE(global_mock_libsecret_items->empty()); |
} |
TEST_F(NativeBackendLibsecretTest, RemoveNonexistentLogin) { |
@@ -728,9 +720,9 @@ TEST_F(NativeBackendLibsecretTest, RemoveNonexistentLogin) { |
// First add an unrelated login. |
backend.AddLogin(form_google_); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
// Attempt to remove a login that doesn't exist. |
@@ -744,9 +736,9 @@ TEST_F(NativeBackendLibsecretTest, RemoveNonexistentLogin) { |
EXPECT_EQ(1u, form_list.size()); |
form_list.clear(); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
} |
@@ -756,9 +748,9 @@ TEST_F(NativeBackendLibsecretTest, UpdateNonexistentLogin) { |
// First add an unrelated login. |
backend.AddLogin(form_google_); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
// Attempt to update a login that doesn't exist. |
@@ -766,9 +758,9 @@ TEST_F(NativeBackendLibsecretTest, UpdateNonexistentLogin) { |
backend.UpdateLogin(form_isc_, &changes); |
EXPECT_EQ(PasswordStoreChangeList(), changes); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
} |
@@ -791,9 +783,9 @@ TEST_F(NativeBackendLibsecretTest, AddDuplicateLogin) { |
actual_changes = backend.AddLogin(form_google_); |
CheckPasswordChanges(expected_changes, actual_changes); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
} |
@@ -811,9 +803,9 @@ TEST_F(NativeBackendLibsecretTest, ListLoginsAppends) { |
EXPECT_EQ(2u, form_list.size()); |
form_list.clear(); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
- if (global_mock_libsecret_items.size() > 0) |
- CheckMockSecretItem(global_mock_libsecret_items[0], form_google_, |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
+ if (!global_mock_libsecret_items->empty()) |
+ CheckMockSecretItem((*global_mock_libsecret_items)[0], form_google_, |
"chrome-42"); |
} |
@@ -854,11 +846,11 @@ TEST_F(NativeBackendLibsecretTest, SomeKeyringAttributesAreMissing) { |
backend.AddLogin(form_google_); |
- EXPECT_EQ(1u, global_mock_libsecret_items.size()); |
+ EXPECT_EQ(1u, global_mock_libsecret_items->size()); |
// Remove a string attribute. |
- global_mock_libsecret_items[0]->RemoveAttribute("avatar_url"); |
+ (*global_mock_libsecret_items)[0]->RemoveAttribute("avatar_url"); |
// Remove an integer attribute. |
- global_mock_libsecret_items[0]->RemoveAttribute("ssl_valid"); |
+ (*global_mock_libsecret_items)[0]->RemoveAttribute("ssl_valid"); |
ScopedVector<autofill::PasswordForm> form_list; |
backend.GetAutofillableLogins(&form_list); |