#include "components/autofill/core/browser/crowdsourcing/determine_possible_field_types.h"
#include "base/metrics/histogram_functions.h"
#include "components/autofill/core/browser/autofill_field.h"
#include "components/autofill/core/browser/crowdsourcing/disambiguate_possible_field_types.h"
#include "components/autofill/core/browser/data_model/address.h"
#include "components/autofill/core/browser/data_model/credit_card.h"
#include "components/autofill/core/browser/field_type_utils.h"
#include "components/autofill/core/browser/field_types.h"
#include "components/autofill/core/browser/form_structure.h"
#include "components/autofill/core/browser/validation.h"
#include "components/autofill/core/common/autofill_features.h"
#include "components/autofill/core/common/autofill_regex_constants.h"
#include "components/autofill/core/common/autofill_regexes.h"
namespace autofill {
namespace {
AutofillField* FindFirstFieldWithValue(const FormStructure& form_structure,
const std::u16string& value) { … }
AutofillField* HeuristicallyFindCVCFieldForUpload(
const FormStructure& form_structure) { … }
AutofillField* GetBestPossibleCVCFieldForUpload(
const FormStructure& form_structure,
std::u16string last_unlocked_credit_card_cvc) { … }
void FindAndSetPossibleFieldTypesForField(
AutofillField& field,
const std::vector<AutofillProfile>& profiles,
const std::vector<CreditCard>& credit_cards,
const std::string& app_locale) { … }
void FindAndSetPossibleFieldTypes(
const std::vector<AutofillProfile>& profiles,
const std::vector<CreditCard>& credit_cards,
const std::u16string& last_unlocked_credit_card_cvc,
const std::string& app_locale,
FormStructure& form) { … }
}
void DeterminePossibleFieldTypesForUpload(
const std::vector<AutofillProfile>& profiles,
const std::vector<CreditCard>& credit_cards,
const std::u16string& last_unlocked_credit_card_cvc,
const std::string& app_locale,
FormStructure* form) { … }
}