// Copyright 2024 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_FORM_FILLER_H_ #define COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FILLER_H_ #include <string> #include "base/memory/raw_ptr.h" #include "base/memory/raw_ref.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_driver.h" #include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/filling_product.h" #include "components/autofill/core/browser/form_autofill_history.h" #include "components/autofill/core/common/autofill_constants.h" namespace autofill { class BrowserAutofillManager; // Denotes the reason for triggering a refill attempt. enum class RefillTriggerReason { … }; // Whether and why filling for a field was skipped during autofill. enum class FieldFillingSkipReason : uint8_t { … }; // Helper class responsible for [re]filling forms and fields. // // It is privately owned by the BrowserAutofillManager, which is the only // component that talks to it. // // It receives cached data and is responsible for either filling directly or // triggering a refill (which eventually results in a filling operation), and // then sending the filled form to the renderer (via AutofillDriver). // // Additionally, it provides an API to determine which fields will be // filled/skipped based on the given context. // // The class is directly responsible for modifying the cached fields in the form // cache (BrowserAutofillManager::form_structures_) since it receives references // to cached fields and modifies some attributes during filling. // // The class is also indirectly responsible for modifying blink forms, since // after filling FormData objects it sends them to the renderer, which is // directly responsible for filling the web forms. // // It holds any state that is only relevant for [re]filling. class FormFiller { … }; } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FILLER_H_