chromium/components/autofill/core/browser/profile_token_quality.h

// 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.

#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_PROFILE_TOKEN_QUALITY_H_
#define COMPONENTS_AUTOFILL_CORE_BROWSER_PROFILE_TOKEN_QUALITY_H_

#include <stddef.h>
#include <stdint.h>

#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
#include <vector>

#include "base/containers/circular_deque.h"
#include "base/containers/flat_map.h"
#include "base/containers/span.h"
#include "base/memory/raw_ref.h"
#include "base/types/strong_alias.h"
#include "components/autofill/core/browser/field_types.h"
#include "components/autofill/core/common/form_data.h"
#include "components/autofill/core/common/signatures.h"

namespace autofill {

class AutofillField;
class AutofillProfile;
class FormStructure;
class PersonalDataManager;

// `ProfileTokenQuality` is associated with one `AutofillProfile` and tracks if
// the supported types of that profile are accepted or edited after filling.
// It is intended to collect observations on form submission using
// `AddObservationsForFilledForm()`.
//
// The observations (accessible via `GetObservationsForFieldType()`) can be used
// to understand of the quality of a supported type. This has applications for
// e.g. voting ("high quality votes") and detection of quasi-duplicate profiles.
// No applications are implemented yet.
//
// Observations are only stored for stored types. The observations of derived
// types use the observations of the corresponding stored type. When collecting
// an observation for a derived type, it is stored as an observation for the
// corresponding stored type.
// See `components/autofill/README.md` for details on stored and derived types.
class ProfileTokenQuality {};

}  // namespace autofill

#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_PROFILE_TOKEN_QUALITY_H_