// 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_OMNIBOX_BROWSER_AUTOCOMPLETE_ENUMS_H_
#define COMPONENTS_OMNIBOX_BROWSER_AUTOCOMPLETE_ENUMS_H_

// The reason `AutocompleteController::Stop()` or `AutocompleteProvider::Stop()`
// were called.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.omnibox
enum class AutocompleteStopReason {

  // - Called when: Significant change occurred and the existing state is no
  //   longer useful.
  // - Action taken: Stop all providers and clear results.
  // - Example calls: The omnibox popup is closed or when some providers
  //   `Start()`.
  kClobbered,

  // - Called when: Omnibox was interacted with in a way that requires its state
  //   to be frozen.
  // - Action taken: Stop all providers and keep results.
  // - Example calls: Entered/left keyword mode, arrowed down through
  //   suggestions, arrowed left through text, match deleted , or when some
  //   providers `Start()`.
  kInteraction,

  // - Called when: User hasn't interacted with the omnibox for a while. See
  //   `AutocompleteController::stop_timer_duration_` comment.
  // - Action taken: Stop most providers and keep results. Some providers are
  //   allowed to continue if there's a good reason the user is likely to want
  //   even long-delayed asynchronous results, e.g. the user has explicitly
  //   invoked a keyword extension and the extension is still processing the
  //   request.
  // - Example calls: `stop_timer_` triggers.
  kInactivity,
};

// State of the keyword.
enum class KeywordState {
  kNone,     // Not in keyword mode.
  kHint,     // Show chip to enter keyword mode.
  kKeyword,  // In keyword mode.
};

#endif  // COMPONENTS_OMNIBOX_BROWSER_AUTOCOMPLETE_ENUMS_H_
