| 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);
|
|
|