Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1441)

Unified Diff: chrome/browser/password_manager/password_store_mac_unittest.cc

Issue 866983003: GetLoginsRequest: Use ScopedVector to express ownership of forms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@324291_scopedvector
Patch Set: Second fix of the rebase Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/password_manager/password_store_mac_unittest.cc
diff --git a/chrome/browser/password_manager/password_store_mac_unittest.cc b/chrome/browser/password_manager/password_store_mac_unittest.cc
index 4576c28f5885068bfb66c43baa48c5612cbacf7d..2181992f5004d9d2b89733b2366a3ec62dd82c4c 100644
--- a/chrome/browser/password_manager/password_store_mac_unittest.cc
+++ b/chrome/browser/password_manager/password_store_mac_unittest.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/password_manager/password_store_mac_internal.h"
#include "chrome/common/chrome_paths.h"
#include "components/password_manager/core/browser/login_database.h"
+#include "components/password_manager/core/browser/password_form_data.h"
#include "components/password_manager/core/browser/password_store_consumer.h"
#include "content/public/test/test_browser_thread.h"
#include "crypto/mock_apple_keychain.h"
@@ -33,43 +34,33 @@ using password_manager::PasswordStoreConsumer;
using testing::_;
using testing::DoAll;
using testing::Invoke;
+using testing::IsEmpty;
+using testing::SizeIs;
using testing::WithArg;
namespace {
-ACTION(STLDeleteElements0) {
- STLDeleteContainerPointers(arg0.begin(), arg0.end());
-}
-
ACTION(QuitUIMessageLoop) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
base::MessageLoop::current()->Quit();
}
+// From the mock's argument #0 of type const std::vector<PasswordForm*>& takes
+// the first form and copies it to the form pointed to by |target_form_ptr|.
+ACTION_P(SaveACopyOfFirstForm, target_form_ptr) {
+ ASSERT_FALSE(arg0.empty());
+ *target_form_ptr = *arg0[0];
+}
+
class MockPasswordStoreConsumer : public PasswordStoreConsumer {
public:
- MOCK_METHOD1(OnGetPasswordStoreResults,
- void(const std::vector<autofill::PasswordForm*>&));
-
- void CopyElements(const std::vector<autofill::PasswordForm*>& forms) {
- last_result.clear();
- for (size_t i = 0; i < forms.size(); ++i) {
- last_result.push_back(*forms[i]);
- }
- }
+ MOCK_METHOD1(OnGetPasswordStoreResultsConstRef,
+ void(const std::vector<PasswordForm*>&));
- // Runs the current thread's message loop until OnGetPasswordStoreResults()
- // is posted to it. This method should be called immediately after GetLogins,
- // without pumping the message loop in-between.
- void WaitOnGetPasswordStoreResults() {
- EXPECT_CALL(*this, OnGetPasswordStoreResults(_)).WillOnce(DoAll(
- WithArg<0>(Invoke(this, &MockPasswordStoreConsumer::CopyElements)),
- WithArg<0>(STLDeleteElements0()),
- QuitUIMessageLoop()));
- base::MessageLoop::current()->Run();
+ // GMock cannot mock methods with move-only args.
+ void OnGetPasswordStoreResults(ScopedVector<PasswordForm> results) override {
+ OnGetPasswordStoreResultsConstRef(results.get());
}
-
- std::vector<PasswordForm> last_result;
};
class MockPasswordStoreObserver : public PasswordStore::Observer {
@@ -133,85 +124,6 @@ class TestPasswordStoreMac : public PasswordStoreMac {
DISALLOW_COPY_AND_ASSIGN(TestPasswordStoreMac);
};
-} // namespace
-
-#pragma mark -
-
-class PasswordStoreMacInternalsTest : public testing::Test {
- public:
- void SetUp() override {
- MockAppleKeychain::KeychainTestData test_data[] = {
- // Basic HTML form.
- { kSecAuthenticationTypeHTMLForm, "some.domain.com",
- kSecProtocolTypeHTTP, NULL, 0, NULL, "20020601171500Z",
- "joe_user", "sekrit", false },
- // HTML form with path.
- { kSecAuthenticationTypeHTMLForm, "some.domain.com",
- kSecProtocolTypeHTTP, "/insecure.html", 0, NULL, "19991231235959Z",
- "joe_user", "sekrit", false },
- // Secure HTML form with path.
- { kSecAuthenticationTypeHTMLForm, "some.domain.com",
- kSecProtocolTypeHTTPS, "/secure.html", 0, NULL, "20100908070605Z",
- "secure_user", "password", false },
- // True negative item.
- { kSecAuthenticationTypeHTMLForm, "dont.remember.com",
- kSecProtocolTypeHTTP, NULL, 0, NULL, "20000101000000Z",
- "", "", true },
- // De-facto negative item, type one.
- { kSecAuthenticationTypeHTMLForm, "dont.remember.com",
- kSecProtocolTypeHTTP, NULL, 0, NULL, "20000101000000Z",
- "Password Not Stored", "", false },
- // De-facto negative item, type two.
- { kSecAuthenticationTypeHTMLForm, "dont.remember.com",
- kSecProtocolTypeHTTPS, NULL, 0, NULL, "20000101000000Z",
- "Password Not Stored", " ", false },
- // HTTP auth basic, with port and path.
- { kSecAuthenticationTypeHTTPBasic, "some.domain.com",
- kSecProtocolTypeHTTP, "/insecure.html", 4567, "low_security",
- "19980330100000Z",
- "basic_auth_user", "basic", false },
- // HTTP auth digest, secure.
- { kSecAuthenticationTypeHTTPDigest, "some.domain.com",
- kSecProtocolTypeHTTPS, NULL, 0, "high_security", "19980330100000Z",
- "digest_auth_user", "digest", false },
- // An FTP password with an invalid date, for edge-case testing.
- { kSecAuthenticationTypeDefault, "a.server.com",
- kSecProtocolTypeFTP, NULL, 0, NULL, "20010203040",
- "abc", "123", false },
- };
-
- keychain_ = new MockAppleKeychain();
-
- for (unsigned int i = 0; i < arraysize(test_data); ++i) {
- keychain_->AddTestItem(test_data[i]);
- }
- }
-
- void TearDown() override {
- ExpectCreatesAndFreesBalanced();
- ExpectCreatorCodesSet();
- delete keychain_;
- }
-
- protected:
- // Causes a test failure unless everything returned from keychain_'s
- // ItemCopyAttributesAndData, SearchCreateFromAttributes, and SearchCopyNext
- // was correctly freed.
- void ExpectCreatesAndFreesBalanced() {
- EXPECT_EQ(0, keychain_->UnfreedSearchCount());
- EXPECT_EQ(0, keychain_->UnfreedKeychainItemCount());
- EXPECT_EQ(0, keychain_->UnfreedAttributeDataCount());
- }
-
- // Causes a test failure unless any Keychain items added during the test have
- // their creator code set.
- void ExpectCreatorCodesSet() {
- EXPECT_TRUE(keychain_->CreatorCodesSetForAddedItems());
- }
-
- MockAppleKeychain* keychain_;
-};
-
#pragma mark -
// Struct used for creation of PasswordForms from static arrays of data.
@@ -230,11 +142,10 @@ struct PasswordFormData {
const double creation_time;
};
-// Creates and returns a new PasswordForm built from form_data. Caller is
-// responsible for deleting the object when finished with it.
-static PasswordForm* CreatePasswordFormFromData(
+// Creates and returns a new PasswordForm built from form_data.
+scoped_ptr<PasswordForm> CreatePasswordFormFromData(
const PasswordFormData& form_data) {
- PasswordForm* form = new PasswordForm();
+ scoped_ptr<PasswordForm> form(new PasswordForm());
form->scheme = form_data.scheme;
form->preferred = form_data.preferred;
form->ssl_valid = form_data.ssl_valid;
@@ -263,7 +174,7 @@ static PasswordForm* CreatePasswordFormFromData(
}
form->avatar_url = GURL("https://accounts.google.com/Avatar");
form->federation_url = GURL("https://accounts.google.com/login");
- return form;
+ return form.Pass();
}
// Macro to simplify calling CheckFormsAgainstExpectations with a useful label.
@@ -274,10 +185,11 @@ static PasswordForm* CreatePasswordFormFromData(
// for any discrepencies.
// TODO(stuartmorgan): This is current order-dependent; ideally it shouldn't
// matter if |forms| and |expectations| are scrambled.
-static void CheckFormsAgainstExpectations(
+void CheckFormsAgainstExpectations(
const std::vector<PasswordForm*>& forms,
const std::vector<PasswordFormData*>& expectations,
- const char* forms_label, unsigned int test_number) {
+ const char* forms_label,
+ unsigned int test_number) {
const unsigned int kBufferSize = 128;
char test_label[kBufferSize];
snprintf(test_label, kBufferSize, "%s in test %u", forms_label, test_number);
@@ -325,6 +237,147 @@ static void CheckFormsAgainstExpectations(
}
}
+} // namespace
+
+#pragma mark -
+
+class PasswordStoreMacInternalsTest : public testing::Test {
+ public:
+ void SetUp() override {
+ MockAppleKeychain::KeychainTestData test_data[] = {
+ // Basic HTML form.
+ {kSecAuthenticationTypeHTMLForm,
+ "some.domain.com",
+ kSecProtocolTypeHTTP,
+ NULL,
+ 0,
+ NULL,
+ "20020601171500Z",
+ "joe_user",
+ "sekrit",
+ false},
+ // HTML form with path.
+ {kSecAuthenticationTypeHTMLForm,
+ "some.domain.com",
+ kSecProtocolTypeHTTP,
+ "/insecure.html",
+ 0,
+ NULL,
+ "19991231235959Z",
+ "joe_user",
+ "sekrit",
+ false},
+ // Secure HTML form with path.
+ {kSecAuthenticationTypeHTMLForm,
+ "some.domain.com",
+ kSecProtocolTypeHTTPS,
+ "/secure.html",
+ 0,
+ NULL,
+ "20100908070605Z",
+ "secure_user",
+ "password",
+ false},
+ // True negative item.
+ {kSecAuthenticationTypeHTMLForm,
+ "dont.remember.com",
+ kSecProtocolTypeHTTP,
+ NULL,
+ 0,
+ NULL,
+ "20000101000000Z",
+ "",
+ "",
+ true},
+ // De-facto negative item, type one.
+ {kSecAuthenticationTypeHTMLForm,
+ "dont.remember.com",
+ kSecProtocolTypeHTTP,
+ NULL,
+ 0,
+ NULL,
+ "20000101000000Z",
+ "Password Not Stored",
+ "",
+ false},
+ // De-facto negative item, type two.
+ {kSecAuthenticationTypeHTMLForm,
+ "dont.remember.com",
+ kSecProtocolTypeHTTPS,
+ NULL,
+ 0,
+ NULL,
+ "20000101000000Z",
+ "Password Not Stored",
+ " ",
+ false},
+ // HTTP auth basic, with port and path.
+ {kSecAuthenticationTypeHTTPBasic,
+ "some.domain.com",
+ kSecProtocolTypeHTTP,
+ "/insecure.html",
+ 4567,
+ "low_security",
+ "19980330100000Z",
+ "basic_auth_user",
+ "basic",
+ false},
+ // HTTP auth digest, secure.
+ {kSecAuthenticationTypeHTTPDigest,
+ "some.domain.com",
+ kSecProtocolTypeHTTPS,
+ NULL,
+ 0,
+ "high_security",
+ "19980330100000Z",
+ "digest_auth_user",
+ "digest",
+ false},
+ // An FTP password with an invalid date, for edge-case testing.
+ {kSecAuthenticationTypeDefault,
+ "a.server.com",
+ kSecProtocolTypeFTP,
+ NULL,
+ 0,
+ NULL,
+ "20010203040",
+ "abc",
+ "123",
+ false},
+ };
+
+ keychain_ = new MockAppleKeychain();
+
+ for (unsigned int i = 0; i < arraysize(test_data); ++i) {
+ keychain_->AddTestItem(test_data[i]);
+ }
+ }
+
+ void TearDown() override {
+ ExpectCreatesAndFreesBalanced();
+ ExpectCreatorCodesSet();
+ delete keychain_;
+ }
+
+ protected:
+ // Causes a test failure unless everything returned from keychain_'s
+ // ItemCopyAttributesAndData, SearchCreateFromAttributes, and SearchCopyNext
+ // was correctly freed.
+ void ExpectCreatesAndFreesBalanced() {
+ EXPECT_EQ(0, keychain_->UnfreedSearchCount());
+ EXPECT_EQ(0, keychain_->UnfreedKeychainItemCount());
+ EXPECT_EQ(0, keychain_->UnfreedAttributeDataCount());
+ }
+
+ // Causes a test failure unless any Keychain items added during the test have
+ // their creator code set.
+ void ExpectCreatorCodesSet() {
+ EXPECT_TRUE(keychain_->CreatorCodesSetForAddedItems());
+ }
+
+ MockAppleKeychain* keychain_;
+};
+
#pragma mark -
TEST_F(PasswordStoreMacInternalsTest, TestKeychainToFormTranslation) {
@@ -477,8 +530,8 @@ TEST_F(PasswordStoreMacInternalsTest, TestKeychainSearch) {
MacKeychainPasswordFormAdapter owned_keychain_adapter(keychain_);
owned_keychain_adapter.SetFindsOnlyOwnedItems(true);
for (unsigned int i = 0; i < arraysize(test_data); ++i) {
- scoped_ptr<PasswordForm> query_form(
- CreatePasswordFormFromData(test_data[i].data));
+ scoped_ptr<PasswordForm> query_form =
+ CreatePasswordFormFromData(test_data[i].data);
// Check matches treating the form as a fill target.
ScopedVector<autofill::PasswordForm> matching_items =
@@ -557,8 +610,8 @@ TEST_F(PasswordStoreMacInternalsTest, TestKeychainExactSearch) {
for (unsigned int i = 0; i < arraysize(base_form_data); ++i) {
// Create a base form and make sure we find a match.
- scoped_ptr<PasswordForm> base_form(CreatePasswordFormFromData(
- base_form_data[i]));
+ scoped_ptr<PasswordForm> base_form =
+ CreatePasswordFormFromData(base_form_data[i]);
EXPECT_TRUE(keychain_adapter.HasPasswordsMergeableWithForm(*base_form));
EXPECT_TRUE(keychain_adapter.HasPasswordExactlyMatchingForm(*base_form));
@@ -631,8 +684,8 @@ TEST_F(PasswordStoreMacInternalsTest, TestKeychainAdd) {
owned_keychain_adapter.SetFindsOnlyOwnedItems(true);
for (unsigned int i = 0; i < arraysize(test_data); ++i) {
- scoped_ptr<PasswordForm> in_form(
- CreatePasswordFormFromData(test_data[i].data));
+ scoped_ptr<PasswordForm> in_form =
+ CreatePasswordFormFromData(test_data[i].data);
bool add_succeeded = owned_keychain_adapter.AddPassword(*in_form);
EXPECT_EQ(test_data[i].should_succeed, add_succeeded);
if (add_succeeded) {
@@ -650,7 +703,7 @@ TEST_F(PasswordStoreMacInternalsTest, TestKeychainAdd) {
"http://some.domain.com/insecure.html", NULL,
NULL, NULL, NULL, L"joe_user", L"updated_password", false, false, 0
};
- scoped_ptr<PasswordForm> update_form(CreatePasswordFormFromData(data));
+ scoped_ptr<PasswordForm> update_form = CreatePasswordFormFromData(data);
MacKeychainPasswordFormAdapter keychain_adapter(keychain_);
EXPECT_TRUE(keychain_adapter.AddPassword(*update_form));
SecKeychainItemRef keychain_item = reinterpret_cast<SecKeychainItemRef>(2);
@@ -683,13 +736,13 @@ TEST_F(PasswordStoreMacInternalsTest, TestKeychainRemove) {
owned_keychain_adapter.SetFindsOnlyOwnedItems(true);
// Add our test item so that we can delete it.
- PasswordForm* add_form = CreatePasswordFormFromData(test_data[0].data);
+ scoped_ptr<PasswordForm> add_form =
+ CreatePasswordFormFromData(test_data[0].data);
EXPECT_TRUE(owned_keychain_adapter.AddPassword(*add_form));
- delete add_form;
for (unsigned int i = 0; i < arraysize(test_data); ++i) {
- scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(
- test_data[i].data));
+ scoped_ptr<PasswordForm> form =
+ CreatePasswordFormFromData(test_data[i].data);
EXPECT_EQ(test_data[i].should_succeed,
owned_keychain_adapter.RemovePassword(*form));
@@ -890,13 +943,13 @@ TEST_F(PasswordStoreMacInternalsTest, TestFormMerge) {
for (std::vector<PasswordFormData*>::iterator i =
test_data[KEYCHAIN_INPUT][test_case].begin();
i != test_data[KEYCHAIN_INPUT][test_case].end(); ++i) {
- keychain_forms.push_back(CreatePasswordFormFromData(*(*i)));
+ keychain_forms.push_back(CreatePasswordFormFromData(*(*i)).release());
}
ScopedVector<autofill::PasswordForm> database_forms;
for (std::vector<PasswordFormData*>::iterator i =
test_data[DATABASE_INPUT][test_case].begin();
i != test_data[DATABASE_INPUT][test_case].end(); ++i) {
- database_forms.push_back(CreatePasswordFormFromData(*(*i)));
+ database_forms.push_back(CreatePasswordFormFromData(*(*i)).release());
}
ScopedVector<autofill::PasswordForm> merged_forms;
@@ -941,7 +994,7 @@ TEST_F(PasswordStoreMacInternalsTest, TestPasswordBulkLookup) {
};
ScopedVector<autofill::PasswordForm> database_forms;
for (unsigned int i = 0; i < arraysize(db_data); ++i) {
- database_forms.push_back(CreatePasswordFormFromData(db_data[i]));
+ database_forms.push_back(CreatePasswordFormFromData(db_data[i]).release());
}
ScopedVector<autofill::PasswordForm> merged_forms;
internal_keychain_helpers::GetPasswordsForForms(*keychain_, &database_forms,
@@ -968,7 +1021,7 @@ TEST_F(PasswordStoreMacInternalsTest, TestBlacklistedFiltering) {
};
ScopedVector<autofill::PasswordForm> database_forms;
for (unsigned int i = 0; i < arraysize(db_data); ++i) {
- database_forms.push_back(CreatePasswordFormFromData(db_data[i]));
+ database_forms.push_back(CreatePasswordFormFromData(db_data[i]).release());
}
ScopedVector<autofill::PasswordForm> merged_forms;
internal_keychain_helpers::GetPasswordsForForms(*keychain_, &database_forms,
@@ -1069,8 +1122,8 @@ TEST_F(PasswordStoreMacInternalsTest, TestPasswordGetAll) {
L"testname", L"testpass", false, false, 0 },
};
for (unsigned int i = 0; i < arraysize(owned_password_data); ++i) {
- scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(
- owned_password_data[i]));
+ scoped_ptr<PasswordForm> form =
+ CreatePasswordFormFromData(owned_password_data[i]);
owned_keychain_adapter.AddPassword(*form);
}
@@ -1137,7 +1190,9 @@ class PasswordStoreMacTest : public testing::Test {
// to finish.
MockPasswordStoreConsumer consumer;
store_->GetLogins(PasswordForm(), PasswordStore::ALLOW_PROMPT, &consumer);
- consumer.WaitOnGetPasswordStoreResults();
+ EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(_))
+ .WillOnce(QuitUIMessageLoop());
+ base::MessageLoop::current()->Run();
}
TestPasswordStoreMac* store() { return store_.get(); }
@@ -1161,7 +1216,7 @@ TEST_F(PasswordStoreMacTest, TestStoreUpdate) {
"http://some.domain.com/insecure.html", "login.cgi",
L"username", L"password", L"submit", L"joe_user", L"sekrit", true, false, 1
};
- scoped_ptr<PasswordForm> joint_form(CreatePasswordFormFromData(joint_data));
+ scoped_ptr<PasswordForm> joint_form = CreatePasswordFormFromData(joint_data);
login_db()->AddLogin(*joint_form);
MockAppleKeychain::KeychainTestData joint_keychain_data = {
kSecAuthenticationTypeHTMLForm, "some.domain.com",
@@ -1210,8 +1265,8 @@ TEST_F(PasswordStoreMacTest, TestStoreUpdate) {
},
};
for (unsigned int i = 0; i < arraysize(updates); ++i) {
- scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(
- updates[i].form_data));
+ scoped_ptr<PasswordForm> form =
+ CreatePasswordFormFromData(updates[i].form_data);
store_->UpdateLogin(*form);
}
@@ -1219,8 +1274,8 @@ TEST_F(PasswordStoreMacTest, TestStoreUpdate) {
MacKeychainPasswordFormAdapter keychain_adapter(keychain());
for (unsigned int i = 0; i < arraysize(updates); ++i) {
- scoped_ptr<PasswordForm> query_form(
- CreatePasswordFormFromData(updates[i].form_data));
+ scoped_ptr<PasswordForm> query_form =
+ CreatePasswordFormFromData(updates[i].form_data);
ScopedVector<autofill::PasswordForm> matching_items =
keychain_adapter.PasswordsFillingForm(query_form->signon_realm,
@@ -1263,7 +1318,7 @@ TEST_F(PasswordStoreMacTest, TestDBKeychainAssociation) {
"http://www.facebook.com/index.html", "login",
L"username", L"password", L"submit", L"joe_user", L"sekrit", true, false, 1
};
- scoped_ptr<PasswordForm> www_form(CreatePasswordFormFromData(www_form_data));
+ scoped_ptr<PasswordForm> www_form = CreatePasswordFormFromData(www_form_data);
login_db()->AddLogin(*www_form);
MacKeychainPasswordFormAdapter owned_keychain_adapter(keychain());
owned_keychain_adapter.SetFindsOnlyOwnedItems(true);
@@ -1276,11 +1331,14 @@ TEST_F(PasswordStoreMacTest, TestDBKeychainAssociation) {
MockPasswordStoreConsumer consumer;
store_->GetLogins(m_form, PasswordStore::ALLOW_PROMPT, &consumer);
- consumer.WaitOnGetPasswordStoreResults();
- EXPECT_EQ(1u, consumer.last_result.size());
+ PasswordForm returned_form;
+ EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(SizeIs(1u)))
+ .WillOnce(
+ DoAll(SaveACopyOfFirstForm(&returned_form), QuitUIMessageLoop()));
+ base::MessageLoop::current()->Run();
// 3. Add the returned password for m.facebook.com.
- login_db()->AddLogin(consumer.last_result[0]);
+ login_db()->AddLogin(returned_form);
owned_keychain_adapter.AddPassword(m_form);
// 4. Remove both passwords.
@@ -1349,12 +1407,12 @@ void CheckRemoveLoginsBetween(PasswordStoreMacTest* test, bool check_created) {
PasswordForm::SCHEME_HTML, "http://different.com/",
"http://different.com/index.html", "login", L"submit", L"username",
L"password", L"different_joe_user", L"sekrit", true, false, 0 };
- scoped_ptr<PasswordForm> form_facebook(
- CreatePasswordFormFromData(www_form_data_facebook));
- scoped_ptr<PasswordForm> form_facebook_old(
- CreatePasswordFormFromData(www_form_data_facebook_old));
- scoped_ptr<PasswordForm> form_other(
- CreatePasswordFormFromData(www_form_data_other));
+ scoped_ptr<PasswordForm> form_facebook =
+ CreatePasswordFormFromData(www_form_data_facebook);
+ scoped_ptr<PasswordForm> form_facebook_old =
+ CreatePasswordFormFromData(www_form_data_facebook_old);
+ scoped_ptr<PasswordForm> form_other =
+ CreatePasswordFormFromData(www_form_data_other);
base::Time now = base::Time::Now();
// TODO(vasilii): remove the next line once crbug/374132 is fixed.
now = base::Time::FromTimeT(now.ToTimeT());
@@ -1453,7 +1511,8 @@ TEST_F(PasswordStoreMacTest, TestRemoveLoginsMultiProfile) {
PasswordForm::SCHEME_HTML, "http://www.facebook.com/",
"http://www.facebook.com/index.html", "login", L"username", L"password",
L"submit", L"joe_user", L"sekrit", true, false, 1 };
- scoped_ptr<PasswordForm> www_form(CreatePasswordFormFromData(www_form_data1));
+ scoped_ptr<PasswordForm> www_form =
+ CreatePasswordFormFromData(www_form_data1);
EXPECT_TRUE(owned_keychain_adapter.AddPassword(*www_form));
// Add a password from the current profile.
@@ -1461,7 +1520,7 @@ TEST_F(PasswordStoreMacTest, TestRemoveLoginsMultiProfile) {
PasswordForm::SCHEME_HTML, "http://www.facebook.com/",
"http://www.facebook.com/index.html", "login", L"username", L"password",
L"submit", L"not_joe_user", L"12345", true, false, 1 };
- www_form.reset(CreatePasswordFormFromData(www_form_data2));
+ www_form = CreatePasswordFormFromData(www_form_data2);
store_->AddLogin(*www_form);
FinishAsyncProcessing();
@@ -1506,7 +1565,7 @@ TEST_F(PasswordStoreMacTest, StoreIsUsableImmediatelyAfterConstruction) {
PasswordForm::SCHEME_HTML, "http://www.facebook.com/",
"http://www.facebook.com/index.html", "login", L"username", L"password",
L"submit", L"not_joe_user", L"12345", true, false, 1};
- scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(www_form_data));
+ scoped_ptr<PasswordForm> form = CreatePasswordFormFromData(www_form_data);
store()->AddLogin(*form);
MockPasswordStoreConsumer mock_consumer;
@@ -1515,8 +1574,9 @@ TEST_F(PasswordStoreMacTest, StoreIsUsableImmediatelyAfterConstruction) {
// Now the read/write tasks are scheduled, let the DB initialization proceed.
event.Signal();
- mock_consumer.WaitOnGetPasswordStoreResults();
- EXPECT_EQ(1u, mock_consumer.last_result.size());
+ EXPECT_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(SizeIs(1u)))
+ .WillOnce(QuitUIMessageLoop());
+ base::MessageLoop::current()->Run();
EXPECT_TRUE(login_db());
}
@@ -1538,7 +1598,7 @@ TEST_F(PasswordStoreMacTest, OperationsOnABadDatabaseSilentlyFail) {
PasswordForm::SCHEME_HTML, "http://www.facebook.com/",
"http://www.facebook.com/index.html", "login", L"username", L"password",
L"submit", L"not_joe_user", L"12345", true, false, 1};
- scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(www_form_data));
+ scoped_ptr<PasswordForm> form = CreatePasswordFormFromData(www_form_data);
scoped_ptr<PasswordForm> blacklisted_form(new PasswordForm(*form));
blacklisted_form->signon_realm = "http://foo.example.com";
blacklisted_form->origin = GURL("http://foo.example.com/origin");
@@ -1551,14 +1611,18 @@ TEST_F(PasswordStoreMacTest, OperationsOnABadDatabaseSilentlyFail) {
// Get all logins; autofillable logins; blacklisted logins.
MockPasswordStoreConsumer mock_consumer;
store()->GetLogins(*form, PasswordStore::DISALLOW_PROMPT, &mock_consumer);
- mock_consumer.WaitOnGetPasswordStoreResults();
- EXPECT_TRUE(mock_consumer.last_result.empty());
+ ON_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(_))
+ .WillByDefault(QuitUIMessageLoop());
+ EXPECT_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
+ base::MessageLoop::current()->Run();
+
store()->GetAutofillableLogins(&mock_consumer);
- mock_consumer.WaitOnGetPasswordStoreResults();
- EXPECT_TRUE(mock_consumer.last_result.empty());
+ EXPECT_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
+ base::MessageLoop::current()->Run();
+
store()->GetBlacklistLogins(&mock_consumer);
- mock_consumer.WaitOnGetPasswordStoreResults();
- EXPECT_TRUE(mock_consumer.last_result.empty());
+ EXPECT_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
+ base::MessageLoop::current()->Run();
// Report metrics.
store()->ReportMetrics("Test Username", true);
« no previous file with comments | « chrome/browser/password_manager/password_store_mac.cc ('k') | chrome/browser/password_manager/password_store_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698