| // Copyright 2025 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_CONTENT_BROWSER_CONTENT_IDENTITY_CREDENTIAL_DELEGATE_H_ |
| #define COMPONENTS_AUTOFILL_CONTENT_BROWSER_CONTENT_IDENTITY_CREDENTIAL_DELEGATE_H_ |
| |
| #include "base/functional/callback.h" |
| #include "components/autofill/core/browser/autofill_field.h" |
| #include "components/autofill/core/browser/foundations/autofill_client.h" |
| #include "components/autofill/core/browser/integrators/identity_credential/identity_credential_delegate.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/webid/autofill_source.h" |
| |
| namespace autofill { |
| |
| // ContentIdentityCredentialDelegate is instantiated by the AutofillClient and |
| // therefore exists once per WebContents. |
| class ContentIdentityCredentialDelegate : public IdentityCredentialDelegate { |
| public: |
| explicit ContentIdentityCredentialDelegate( |
| content::WebContents* web_contents); |
| |
| // Exposed for tests to inject a mock `AutofillSource` as a |
| // dependency. |
| explicit ContentIdentityCredentialDelegate( |
| base::RepeatingCallback<content::webid::AutofillSource*()> source); |
| |
| ~ContentIdentityCredentialDelegate() override; |
| |
| std::vector<Suggestion> GetVerifiedAutofillSuggestions( |
| const FormData& form, |
| const FormStructure* form_structure, |
| const FormFieldData& field, |
| const AutofillField* autofill_field, |
| const AutofillClient& client) const override; |
| |
| void NotifySuggestionAccepted( |
| const Suggestion& suggestion, |
| bool show_modal, |
| OnFederatedTokenReceivedCallback callback) const override; |
| |
| std::unique_ptr<SuggestionGenerator> |
| GetIdentityCredentialSuggestionGenerator() override; |
| |
| private: |
| // Provides a `AutofillSource`. Derived from `WebContents` in |
| // practice and mocked in tests. |
| base::RepeatingCallback<content::webid::AutofillSource*()> source_; |
| }; |
| |
| } // namespace autofill |
| |
| #endif // COMPONENTS_AUTOFILL_CONTENT_BROWSER_CONTENT_IDENTITY_CREDENTIAL_DELEGATE_H_ |