blob: 5c2754984573526b57ebd93d3aaf3c7b47f6da4f [file] [log] [blame]
// 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_