/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/toolkit/components/autocomplete/nsIAutoCompletePopup.idl
 */

#ifndef __gen_nsIAutoCompletePopup_h__
#define __gen_nsIAutoCompletePopup_h__


#include "nsISupports.h"

#include "js/GCAnnotations.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIAutoCompleteInput; /* forward declaration */

class nsIFormFillCompleteObserver; /* forward declaration */

namespace mozilla {
namespace dom {
class Element; /* webidl Element */
} // namespace dom
} // namespace mozilla


/* starting interface:    nsIAutoCompletePopup */
#define NS_IAUTOCOMPLETEPOPUP_IID_STR "bd3c2662-a988-41ab-8c94-c15ed0e6ac7d"

#define NS_IAUTOCOMPLETEPOPUP_IID \
  {0xbd3c2662, 0xa988, 0x41ab, \
    { 0x8c, 0x94, 0xc1, 0x5e, 0xd0, 0xe6, 0xac, 0x7d }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIAutoCompletePopup) nsIAutoCompletePopup : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IAUTOCOMPLETEPOPUP_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIAutoCompletePopup;

  /* readonly attribute nsIAutoCompleteInput input; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_input)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetInput(nsIAutoCompleteInput **aInput) = 0;

  /* readonly attribute AString overrideValue; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_overrideValue)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetOverrideValue(nsAString& aOverrideValue) = 0;

  /* attribute long selectedIndex; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_selectedIndex)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetSelectedIndex(int32_t *aSelectedIndex) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIAutoCompletePopup_selectedIndex)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetSelectedIndex(int32_t aSelectedIndex) = 0;

  /* readonly attribute boolean popupOpen; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_popupOpen)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetPopupOpen(bool *aPopupOpen) = 0;

  /* boolean getNoRollupOnEmptySearch (in Element element); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_getNoRollupOnEmptySearch)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetNoRollupOnEmptySearch(mozilla::dom::Element *element, bool *_retval) = 0;

  /* void openAutocompletePopup (in nsIAutoCompleteInput input, in Element element); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_openAutocompletePopup)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD OpenAutocompletePopup(nsIAutoCompleteInput *input, mozilla::dom::Element *element) = 0;

  /* void closePopup (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_closePopup)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ClosePopup(void) = 0;

  /* void invalidate (in unsigned short reason); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_invalidate)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Invalidate(uint16_t reason) = 0;

  enum {
    INVALIDATE_REASON_NEW_RESULT MOZ_BINDING(binding_to, idl, const, XPIDL_nsIAutoCompletePopup_INVALIDATE_REASON_NEW_RESULT) = 0U,
    INVALIDATE_REASON_DELETE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIAutoCompletePopup_INVALIDATE_REASON_DELETE) = 1U
  };

  /* void selectBy (in boolean reverse, in boolean page); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_selectBy)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SelectBy(bool reverse, bool page) = 0;

  /* void startSearch (in AString searchString, in Element element, in nsIFormFillCompleteObserver listener); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_startSearch)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD StartSearch(const nsAString& searchString, mozilla::dom::Element *element, nsIFormFillCompleteObserver *listener) = 0;

  /* void stopSearch (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_stopSearch)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD StopSearch(void) = 0;

  /* void selectEntry (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_selectEntry)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SelectEntry(void) = 0;

  /* boolean navigateSecondaryAction (in boolean reverse); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_navigateSecondaryAction)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD NavigateSecondaryAction(bool reverse, bool *_retval) = 0;

  /* boolean maybeActivateSecondaryAction (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_maybeActivateSecondaryAction)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD MaybeActivateSecondaryAction(bool *_retval) = 0;

  /* boolean maybeLeaveSecondaryAction (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_maybeLeaveSecondaryAction)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD MaybeLeaveSecondaryAction(bool *_retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIAUTOCOMPLETEPOPUP \
  NS_IMETHOD GetInput(nsIAutoCompleteInput **aInput) override; \
  NS_IMETHOD GetOverrideValue(nsAString& aOverrideValue) override; \
  NS_IMETHOD GetSelectedIndex(int32_t *aSelectedIndex) override; \
  NS_IMETHOD SetSelectedIndex(int32_t aSelectedIndex) override; \
  NS_IMETHOD GetPopupOpen(bool *aPopupOpen) override; \
  NS_IMETHOD GetNoRollupOnEmptySearch(mozilla::dom::Element *element, bool *_retval) override; \
  NS_IMETHOD OpenAutocompletePopup(nsIAutoCompleteInput *input, mozilla::dom::Element *element) override; \
  NS_IMETHOD ClosePopup(void) override; \
  NS_IMETHOD Invalidate(uint16_t reason) override; \
  NS_IMETHOD SelectBy(bool reverse, bool page) override; \
  NS_IMETHOD StartSearch(const nsAString& searchString, mozilla::dom::Element *element, nsIFormFillCompleteObserver *listener) override; \
  NS_IMETHOD StopSearch(void) override; \
  NS_IMETHOD SelectEntry(void) override; \
  NS_IMETHOD NavigateSecondaryAction(bool reverse, bool *_retval) override; \
  NS_IMETHOD MaybeActivateSecondaryAction(bool *_retval) override; \
  NS_IMETHOD MaybeLeaveSecondaryAction(bool *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIAUTOCOMPLETEPOPUP \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_input)\
  nsresult GetInput(nsIAutoCompleteInput **aInput); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_overrideValue)\
  nsresult GetOverrideValue(nsAString& aOverrideValue); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_selectedIndex)\
  nsresult GetSelectedIndex(int32_t *aSelectedIndex); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIAutoCompletePopup_selectedIndex)\
  nsresult SetSelectedIndex(int32_t aSelectedIndex); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIAutoCompletePopup_popupOpen)\
  nsresult GetPopupOpen(bool *aPopupOpen); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_getNoRollupOnEmptySearch)\
  nsresult GetNoRollupOnEmptySearch(mozilla::dom::Element *element, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_openAutocompletePopup)\
  nsresult OpenAutocompletePopup(nsIAutoCompleteInput *input, mozilla::dom::Element *element); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_closePopup)\
  nsresult ClosePopup(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_invalidate)\
  nsresult Invalidate(uint16_t reason); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_selectBy)\
  nsresult SelectBy(bool reverse, bool page); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_startSearch)\
  nsresult StartSearch(const nsAString& searchString, mozilla::dom::Element *element, nsIFormFillCompleteObserver *listener); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_stopSearch)\
  nsresult StopSearch(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_selectEntry)\
  nsresult SelectEntry(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_navigateSecondaryAction)\
  nsresult NavigateSecondaryAction(bool reverse, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_maybeActivateSecondaryAction)\
  nsresult MaybeActivateSecondaryAction(bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIAutoCompletePopup_maybeLeaveSecondaryAction)\
  nsresult MaybeLeaveSecondaryAction(bool *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIAUTOCOMPLETEPOPUP(_to) \
  NS_IMETHOD GetInput(nsIAutoCompleteInput **aInput) override { return _to GetInput(aInput); } \
  NS_IMETHOD GetOverrideValue(nsAString& aOverrideValue) override { return _to GetOverrideValue(aOverrideValue); } \
  NS_IMETHOD GetSelectedIndex(int32_t *aSelectedIndex) override { return _to GetSelectedIndex(aSelectedIndex); } \
  NS_IMETHOD SetSelectedIndex(int32_t aSelectedIndex) override { return _to SetSelectedIndex(aSelectedIndex); } \
  NS_IMETHOD GetPopupOpen(bool *aPopupOpen) override { return _to GetPopupOpen(aPopupOpen); } \
  NS_IMETHOD GetNoRollupOnEmptySearch(mozilla::dom::Element *element, bool *_retval) override { return _to GetNoRollupOnEmptySearch(element, _retval); } \
  NS_IMETHOD OpenAutocompletePopup(nsIAutoCompleteInput *input, mozilla::dom::Element *element) override { return _to OpenAutocompletePopup(input, element); } \
  NS_IMETHOD ClosePopup(void) override { return _to ClosePopup(); } \
  NS_IMETHOD Invalidate(uint16_t reason) override { return _to Invalidate(reason); } \
  NS_IMETHOD SelectBy(bool reverse, bool page) override { return _to SelectBy(reverse, page); } \
  NS_IMETHOD StartSearch(const nsAString& searchString, mozilla::dom::Element *element, nsIFormFillCompleteObserver *listener) override { return _to StartSearch(searchString, element, listener); } \
  NS_IMETHOD StopSearch(void) override { return _to StopSearch(); } \
  NS_IMETHOD SelectEntry(void) override { return _to SelectEntry(); } \
  NS_IMETHOD NavigateSecondaryAction(bool reverse, bool *_retval) override { return _to NavigateSecondaryAction(reverse, _retval); } \
  NS_IMETHOD MaybeActivateSecondaryAction(bool *_retval) override { return _to MaybeActivateSecondaryAction(_retval); } \
  NS_IMETHOD MaybeLeaveSecondaryAction(bool *_retval) override { return _to MaybeLeaveSecondaryAction(_retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIAUTOCOMPLETEPOPUP(_to) \
  NS_IMETHOD GetInput(nsIAutoCompleteInput **aInput) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInput(aInput); } \
  NS_IMETHOD GetOverrideValue(nsAString& aOverrideValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOverrideValue(aOverrideValue); } \
  NS_IMETHOD GetSelectedIndex(int32_t *aSelectedIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedIndex(aSelectedIndex); } \
  NS_IMETHOD SetSelectedIndex(int32_t aSelectedIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSelectedIndex(aSelectedIndex); } \
  NS_IMETHOD GetPopupOpen(bool *aPopupOpen) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPopupOpen(aPopupOpen); } \
  NS_IMETHOD GetNoRollupOnEmptySearch(mozilla::dom::Element *element, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNoRollupOnEmptySearch(element, _retval); } \
  NS_IMETHOD OpenAutocompletePopup(nsIAutoCompleteInput *input, mozilla::dom::Element *element) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenAutocompletePopup(input, element); } \
  NS_IMETHOD ClosePopup(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClosePopup(); } \
  NS_IMETHOD Invalidate(uint16_t reason) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Invalidate(reason); } \
  NS_IMETHOD SelectBy(bool reverse, bool page) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectBy(reverse, page); } \
  NS_IMETHOD StartSearch(const nsAString& searchString, mozilla::dom::Element *element, nsIFormFillCompleteObserver *listener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StartSearch(searchString, element, listener); } \
  NS_IMETHOD StopSearch(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StopSearch(); } \
  NS_IMETHOD SelectEntry(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectEntry(); } \
  NS_IMETHOD NavigateSecondaryAction(bool reverse, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NavigateSecondaryAction(reverse, _retval); } \
  NS_IMETHOD MaybeActivateSecondaryAction(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MaybeActivateSecondaryAction(_retval); } \
  NS_IMETHOD MaybeLeaveSecondaryAction(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MaybeLeaveSecondaryAction(_retval); } 


#endif /* __gen_nsIAutoCompletePopup_h__ */
