| Index: chrome/browser/sync/test/integration/passwords_helper.cc
|
| diff --git a/chrome/browser/sync/test/integration/passwords_helper.cc b/chrome/browser/sync/test/integration/passwords_helper.cc
|
| index 1237a9b7e1e3393c7a26829910862792d19c5ca8..8600360da7fbddd36908194b6ae35f1d2890fe45 100644
|
| --- a/chrome/browser/sync/test/integration/passwords_helper.cc
|
| +++ b/chrome/browser/sync/test/integration/passwords_helper.cc
|
| @@ -25,11 +25,11 @@ using autofill::PasswordForm;
|
| using password_manager::PasswordStore;
|
| using sync_datatype_helper::test;
|
|
|
| -const std::string kFakeSignonRealm = "http://fake-signon-realm.google.com/";
|
| -const char* kIndexedFakeOrigin = "http://fake-signon-realm.google.com/%d";
|
| -
|
| namespace {
|
|
|
| +const char kFakeSignonRealm[] = "http://fake-signon-realm.google.com/";
|
| +const char kIndexedFakeOrigin[] = "http://fake-signon-realm.google.com/%d";
|
| +
|
| // We use a WaitableEvent to wait when logins are added, removed, or updated
|
| // instead of running the UI message loop because of a restriction that
|
| // prevents a DB thread from initiating a quit of the UI message loop.
|
| @@ -41,36 +41,27 @@ void PasswordStoreCallback(base::WaitableEvent* wait_event) {
|
| class PasswordStoreConsumerHelper
|
| : public password_manager::PasswordStoreConsumer {
|
| public:
|
| - explicit PasswordStoreConsumerHelper(std::vector<PasswordForm>* result)
|
| - : password_manager::PasswordStoreConsumer(), result_(result) {}
|
| -
|
| - void OnGetPasswordStoreResults(
|
| - const std::vector<PasswordForm*>& result) override {
|
| - result_->clear();
|
| - for (std::vector<PasswordForm*>::const_iterator it = result.begin();
|
| - it != result.end();
|
| - ++it) {
|
| - result_->push_back(**it);
|
| - delete *it;
|
| - }
|
| + PasswordStoreConsumerHelper() {}
|
|
|
| + void OnGetPasswordStoreResults(ScopedVector<PasswordForm> results) override {
|
| + result_.swap(results);
|
| // Quit the message loop to wake up passwords_helper::GetLogins.
|
| base::MessageLoopForUI::current()->Quit();
|
| }
|
|
|
| + ScopedVector<PasswordForm> result() { return result_.Pass(); }
|
| +
|
| private:
|
| - std::vector<PasswordForm>* result_;
|
| + ScopedVector<PasswordForm> result_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PasswordStoreConsumerHelper);
|
| };
|
|
|
| // PasswordForm::date_synced is a local field. Therefore it may be different
|
| // across clients.
|
| -void ClearSyncDateField(std::vector<PasswordForm>* forms) {
|
| - for (std::vector<PasswordForm>::iterator it = forms->begin();
|
| - it != forms->end();
|
| - ++it) {
|
| - it->date_synced = base::Time();
|
| +void ClearSyncDateField(std::vector<PasswordForm*>* forms) {
|
| + for (PasswordForm* form : *forms) {
|
| + form->date_synced = base::Time();
|
| }
|
| }
|
|
|
| @@ -94,13 +85,14 @@ void UpdateLogin(PasswordStore* store, const PasswordForm& form) {
|
| wait_event.Wait();
|
| }
|
|
|
| -void GetLogins(PasswordStore* store, std::vector<PasswordForm>& matches) {
|
| - ASSERT_TRUE(store);
|
| +ScopedVector<PasswordForm> GetLogins(PasswordStore* store) {
|
| + EXPECT_TRUE(store);
|
| PasswordForm matcher_form;
|
| matcher_form.signon_realm = kFakeSignonRealm;
|
| - PasswordStoreConsumerHelper consumer(&matches);
|
| + PasswordStoreConsumerHelper consumer;
|
| store->GetLogins(matcher_form, PasswordStore::DISALLOW_PROMPT, &consumer);
|
| content::RunMessageLoop();
|
| + return consumer.result();
|
| }
|
|
|
| void RemoveLogin(PasswordStore* store, const PasswordForm& form) {
|
| @@ -112,11 +104,9 @@ void RemoveLogin(PasswordStore* store, const PasswordForm& form) {
|
| }
|
|
|
| void RemoveLogins(PasswordStore* store) {
|
| - std::vector<PasswordForm> forms;
|
| - GetLogins(store, forms);
|
| - for (std::vector<PasswordForm>::iterator it = forms.begin();
|
| - it != forms.end(); ++it) {
|
| - RemoveLogin(store, *it);
|
| + ScopedVector<PasswordForm> forms = GetLogins(store);
|
| + for (const PasswordForm* form : forms) {
|
| + RemoveLogin(store, *form);
|
| }
|
| }
|
|
|
| @@ -144,46 +134,40 @@ PasswordStore* GetVerifierPasswordStore() {
|
| }
|
|
|
| bool ProfileContainsSamePasswordFormsAsVerifier(int index) {
|
| - std::vector<PasswordForm> verifier_forms;
|
| - std::vector<PasswordForm> forms;
|
| - GetLogins(GetVerifierPasswordStore(), verifier_forms);
|
| - GetLogins(GetPasswordStore(index), forms);
|
| - ClearSyncDateField(&forms);
|
| - bool result =
|
| - password_manager::ContainsSamePasswordForms(verifier_forms, forms);
|
| + ScopedVector<PasswordForm> verifier_forms =
|
| + GetLogins(GetVerifierPasswordStore());
|
| + ScopedVector<PasswordForm> forms = GetLogins(GetPasswordStore(index));
|
| + ClearSyncDateField(&forms.get());
|
| + bool result = password_manager::ContainsSamePasswordFormsPtr(
|
| + verifier_forms.get(), forms.get());
|
| if (!result) {
|
| - LOG(ERROR) << "Password forms in Verifier Profile:";
|
| - for (std::vector<PasswordForm>::iterator it = verifier_forms.begin();
|
| - it != verifier_forms.end(); ++it) {
|
| - LOG(ERROR) << *it << std::endl;
|
| + VLOG(1) << "Password forms in Verifier Profile:";
|
| + for (const PasswordForm* form : verifier_forms) {
|
| + VLOG(1) << *form;
|
| }
|
| - LOG(ERROR) << "Password forms in Profile" << index << ":";
|
| - for (std::vector<PasswordForm>::iterator it = forms.begin();
|
| - it != forms.end(); ++it) {
|
| - LOG(ERROR) << *it << std::endl;
|
| + VLOG(1) << "Password forms in Profile" << index << ":";
|
| + for (const PasswordForm* form : forms) {
|
| + VLOG(1) << *form;
|
| }
|
| }
|
| return result;
|
| }
|
|
|
| bool ProfilesContainSamePasswordForms(int index_a, int index_b) {
|
| - std::vector<PasswordForm> forms_a;
|
| - std::vector<PasswordForm> forms_b;
|
| - GetLogins(GetPasswordStore(index_a), forms_a);
|
| - GetLogins(GetPasswordStore(index_b), forms_b);
|
| - ClearSyncDateField(&forms_a);
|
| - ClearSyncDateField(&forms_b);
|
| - bool result = password_manager::ContainsSamePasswordForms(forms_a, forms_b);
|
| + ScopedVector<PasswordForm> forms_a = GetLogins(GetPasswordStore(index_a));
|
| + ScopedVector<PasswordForm> forms_b = GetLogins(GetPasswordStore(index_b));
|
| + ClearSyncDateField(&forms_a.get());
|
| + ClearSyncDateField(&forms_b.get());
|
| + bool result = password_manager::ContainsSamePasswordFormsPtr(forms_a.get(),
|
| + forms_b.get());
|
| if (!result) {
|
| - LOG(ERROR) << "Password forms in Profile" << index_a << ":";
|
| - for (std::vector<PasswordForm>::iterator it = forms_a.begin();
|
| - it != forms_a.end(); ++it) {
|
| - LOG(ERROR) << *it << std::endl;
|
| + VLOG(1) << "Password forms in Profile" << index_a << ":";
|
| + for (const PasswordForm* form : forms_a) {
|
| + VLOG(1) << *form;
|
| }
|
| - LOG(ERROR) << "Password forms in Profile" << index_b << ":";
|
| - for (std::vector<PasswordForm>::iterator it = forms_b.begin();
|
| - it != forms_b.end(); ++it) {
|
| - LOG(ERROR) << *it << std::endl;
|
| + VLOG(1) << "Password forms in Profile" << index_b << ":";
|
| + for (const PasswordForm* form : forms_b) {
|
| + VLOG(1) << *form;
|
| }
|
| }
|
| return result;
|
| @@ -344,14 +328,13 @@ bool AwaitProfileContainsSamePasswordFormsAsVerifier(int index) {
|
| }
|
|
|
| int GetPasswordCount(int index) {
|
| - std::vector<PasswordForm> forms;
|
| - GetLogins(GetPasswordStore(index), forms);
|
| + ScopedVector<PasswordForm> forms = GetLogins(GetPasswordStore(index));
|
| return forms.size();
|
| }
|
|
|
| int GetVerifierPasswordCount() {
|
| - std::vector<PasswordForm> verifier_forms;
|
| - GetLogins(GetVerifierPasswordStore(), verifier_forms);
|
| + ScopedVector<PasswordForm> verifier_forms =
|
| + GetLogins(GetVerifierPasswordStore());
|
| return verifier_forms.size();
|
| }
|
|
|
|
|