blob: e6853600dbe1405eb8e20254dd560b68f62fcbc7 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/sync/test/integration/contact_info_helper.h"
#include "chrome/browser/autofill/personal_data_manager_factory.h"
#include "components/autofill/core/browser/data_model/autofill_profile_test_api.h"
#include "components/autofill/core/browser/test_utils/autofill_test_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace contact_info_helper {
namespace {
using autofill::AutofillProfile;
} // namespace
AutofillProfile BuildTestAccountProfile() {
AutofillProfile profile = autofill::test::GetFullProfile();
// The CONTACT_INFO data type is only concerned with kAccount profiles.
// kLocalOrSyncable profiles are handled by the AUTOFILL_PROFILE type.
test_api(profile).set_record_type(AutofillProfile::RecordType::kAccount);
return profile;
}
autofill::PersonalDataManager* GetPersonalDataManager(Profile* profile) {
return autofill::PersonalDataManagerFactory::GetForBrowserContext(profile);
}
AddressDataManagerProfileChecker::AddressDataManagerProfileChecker(
autofill::AddressDataManager* adm,
const testing::Matcher<std::vector<AutofillProfile>>& matcher)
: adm_(adm), matcher_(matcher) {
adm_->AddObserver(this);
}
AddressDataManagerProfileChecker::~AddressDataManagerProfileChecker() {
adm_->RemoveObserver(this);
}
bool AddressDataManagerProfileChecker::IsExitConditionSatisfied(
std::ostream* os) {
std::vector<AutofillProfile> profiles;
for (const AutofillProfile* profile : adm_->GetProfiles()) {
profiles.push_back(*profile);
}
testing::StringMatchResultListener listener;
bool matches = testing::ExplainMatchResult(matcher_, profiles, &listener);
*os << listener.str();
return matches;
}
void AddressDataManagerProfileChecker::OnAddressDataChanged() {
CheckExitCondition();
}
} // namespace contact_info_helper