chromium/components/autofill/content/renderer/suggestion_properties.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_CONTENT_RENDERER_SUGGESTION_PROPERTIES_H_
#define COMPONENTS_AUTOFILL_CONTENT_RENDERER_SUGGESTION_PROPERTIES_H_

#include "components/autofill/core/common/aliases.h"
#include "third_party/blink/public/web/web_form_control_element.h"

namespace autofill {

// The following functions define properties of Autofill suggestions based on
// the trigger source and the triggering WebFormControlElement.
// They are only applicable for trigger sources that trigger through the
// renderer. When suggestions are updated, the suggestion properties are
// irrelevant, since the decision to show suggestions was already made.

// Specifies if suggestions should be shown when the triggering element contains
// no text.
bool ShouldAutofillOnEmptyValues(
    AutofillSuggestionTriggerSource trigger_source);

// Returns whether to query Autofill (i.e. call `AskForValuesToFill`) for values
// that exceed `autofill::kMaxStringLength`.
bool ShouldAutofillOnLongValues(AutofillSuggestionTriggerSource trigger_source);

// Specifies if suggestions should be shown when the caret is not after the last
// character of the triggering element.
bool RequiresCaretAtEnd(AutofillSuggestionTriggerSource trigger_source);

// Specifies if all suggestions should be shown and none should be elided
// because of the current value of triggering element.
// This is only used by the password manager.
bool ShouldShowFullSuggestionListForPasswordManager(
    AutofillSuggestionTriggerSource trigger_source,
    const blink::WebFormControlElement& element);

}  // namespace autofill

#endif  // COMPONENTS_AUTOFILL_CONTENT_RENDERER_SUGGESTION_PROPERTIES_H_