#include "chrome/browser/ui/autofill/autofill_suggestion_controller_utils.h"
#include <string>
#include <vector>
#include "base/functional/overloaded.h"
#include "chrome/browser/feature_engagement/tracker_factory.h"
#include "components/autofill/content/browser/content_autofill_driver.h"
#include "components/autofill/core/browser/ui/suggestion.h"
#include "components/autofill/core/browser/ui/suggestion_type.h"
#include "components/autofill/core/common/autofill_features.h"
#include "components/autofill/core/common/dense_set.h"
#include "components/autofill/core/common/form_field_data.h"
#include "components/compose/core/browser/compose_features.h"
#include "components/feature_engagement/public/feature_constants.h"
#include "components/feature_engagement/public/tracker.h"
#include "components/password_manager/content/browser/content_password_manager_driver.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
#if !BUILDFLAG(IS_ANDROID)
#include "chrome/browser/user_education/user_education_service.h"
#endif
namespace autofill {
bool IsAcceptableSuggestionType(SuggestionType id) { … }
bool IsFooterSuggestionType(SuggestionType type) { … }
bool IsFooterItem(const std::vector<Suggestion>& suggestions,
size_t line_number) { … }
bool IsStandaloneSuggestionType(SuggestionType type) { … }
content::RenderFrameHost* GetRenderFrameHost(
AutofillSuggestionDelegate& delegate) { … }
bool IsAncestorOf(content::RenderFrameHost* ancestor,
content::RenderFrameHost* descendant) { … }
bool IsPointerLocked(content::WebContents* web_contents) { … }
void NotifyUserEducationAboutAcceptedSuggestion(
content::BrowserContext* browser_context,
const Suggestion& suggestion) { … }
std::vector<Suggestion> UpdateSuggestionsFromDataList(
base::span<const SelectOption> options,
std::vector<Suggestion> suggestions) { … }
}