/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/xpfe/appshell/nsIWindowMediator.idl
 */

#ifndef __gen_nsIWindowMediator_h__
#define __gen_nsIWindowMediator_h__


#include "nsISupports.h"

#include "nsISimpleEnumerator.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
// %{C++:9-25
#include "mozilla/TypedEnumBits.h"

#define NS_WINDOWMEDIATOR_CID \
{ 0x79a2b7cc, 0xf05b, 0x4605, \
  { 0xbf, 0xa0, 0xfa, 0xc5, 0x4f, 0x27, 0xee, 0xc8 } }

#define NS_WINDOWMEDIATOR_CONTRACTID \
  "@mozilla.org/appshell/window-mediator;1"

enum class WindowMediatorFilter : uint8_t {
  None = 0,
  SkipPrivateBrowsing = 1 << 0,
  SkipClosed = 1 << 1,
  SkipNonPrivateBrowsing = 1 << 2,
};

MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(WindowMediatorFilter)
// %}
class mozIDOMWindow; /* forward declaration */

class mozIDOMWindowProxy; /* forward declaration */

class nsIAppWindow; /* forward declaration */

class nsIWidget; /* forward declaration */

class nsIWindowMediatorListener; /* forward declaration */


/* starting interface:    nsIWindowMediator */
#define NS_IWINDOWMEDIATOR_IID_STR "df0da056-357d-427f-bafd-e6cbf19c9381"

#define NS_IWINDOWMEDIATOR_IID \
  {0xdf0da056, 0x357d, 0x427f, \
    { 0xba, 0xfd, 0xe6, 0xcb, 0xf1, 0x9c, 0x93, 0x81 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIWindowMediator) nsIWindowMediator : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IWINDOWMEDIATOR_IID)

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

  /* nsISimpleEnumerator getEnumerator (in wstring aWindowType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getEnumerator)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getAppWindowEnumerator (in wstring aWindowType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getAppWindowEnumerator)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetAppWindowEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getZOrderAppWindowEnumerator (in wstring aWindowType, in boolean aFrontToBack); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getZOrderAppWindowEnumerator)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetZOrderAppWindowEnumerator(const char16_t * aWindowType, bool aFrontToBack, nsISimpleEnumerator **_retval) = 0;

  /* mozIDOMWindowProxy getMostRecentWindow (in wstring aWindowType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentWindow)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetMostRecentWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) = 0;

  /* mozIDOMWindowProxy getMostRecentBrowserWindow (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentBrowserWindow)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetMostRecentBrowserWindow(mozIDOMWindowProxy **_retval) = 0;

  /* mozIDOMWindowProxy getMostRecentNonPBWindow (in wstring aWindowType); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentNonPBWindow)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetMostRecentNonPBWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) = 0;

  /* mozIDOMWindowProxy getMostRecentWindowBy (in wstring aWindowType, in uint8_t aFilter); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentWindowBy)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetMostRecentWindowBy(const char16_t * aWindowType, uint8_t aFilter, mozIDOMWindowProxy **_retval) = 0;

  /* mozIDOMWindowProxy getOuterWindowWithId (in unsigned long long aOuterWindowID); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getOuterWindowWithId)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetOuterWindowWithId(uint64_t aOuterWindowID, mozIDOMWindowProxy **_retval) = 0;

  /* mozIDOMWindow getCurrentInnerWindowWithId (in unsigned long long aInnerWindowID); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getCurrentInnerWindowWithId)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetCurrentInnerWindowWithId(uint64_t aInnerWindowID, mozIDOMWindow **_retval) = 0;

  /* [noscript] void registerWindow (in nsIAppWindow aWindow); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_registerWindow)
  NS_IMETHOD RegisterWindow(nsIAppWindow *aWindow) = 0;

  /* [noscript] void unregisterWindow (in nsIAppWindow aWindow); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_unregisterWindow)
  NS_IMETHOD UnregisterWindow(nsIAppWindow *aWindow) = 0;

  /* [noscript] void updateWindowTimeStamp (in nsIAppWindow aWindow); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_updateWindowTimeStamp)
  NS_IMETHOD UpdateWindowTimeStamp(nsIAppWindow *aWindow) = 0;

  /* void addListener (in nsIWindowMediatorListener aListener); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_addListener)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD AddListener(nsIWindowMediatorListener *aListener) = 0;

  /* void removeListener (in nsIWindowMediatorListener aListener); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_removeListener)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD RemoveListener(nsIWindowMediatorListener *aListener) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWINDOWMEDIATOR \
  NS_IMETHOD GetEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) override; \
  NS_IMETHOD GetAppWindowEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) override; \
  NS_IMETHOD GetZOrderAppWindowEnumerator(const char16_t * aWindowType, bool aFrontToBack, nsISimpleEnumerator **_retval) override; \
  NS_IMETHOD GetMostRecentWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) override; \
  NS_IMETHOD GetMostRecentBrowserWindow(mozIDOMWindowProxy **_retval) override; \
  NS_IMETHOD GetMostRecentNonPBWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) override; \
  NS_IMETHOD GetMostRecentWindowBy(const char16_t * aWindowType, uint8_t aFilter, mozIDOMWindowProxy **_retval) override; \
  NS_IMETHOD GetOuterWindowWithId(uint64_t aOuterWindowID, mozIDOMWindowProxy **_retval) override; \
  NS_IMETHOD GetCurrentInnerWindowWithId(uint64_t aInnerWindowID, mozIDOMWindow **_retval) override; \
  NS_IMETHOD RegisterWindow(nsIAppWindow *aWindow) override; \
  NS_IMETHOD UnregisterWindow(nsIAppWindow *aWindow) override; \
  NS_IMETHOD UpdateWindowTimeStamp(nsIAppWindow *aWindow) override; \
  NS_IMETHOD AddListener(nsIWindowMediatorListener *aListener) override; \
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *aListener) 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_NSIWINDOWMEDIATOR \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getEnumerator)\
  nsresult GetEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getAppWindowEnumerator)\
  nsresult GetAppWindowEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getZOrderAppWindowEnumerator)\
  nsresult GetZOrderAppWindowEnumerator(const char16_t * aWindowType, bool aFrontToBack, nsISimpleEnumerator **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentWindow)\
  nsresult GetMostRecentWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentBrowserWindow)\
  nsresult GetMostRecentBrowserWindow(mozIDOMWindowProxy **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentNonPBWindow)\
  nsresult GetMostRecentNonPBWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getMostRecentWindowBy)\
  nsresult GetMostRecentWindowBy(const char16_t * aWindowType, uint8_t aFilter, mozIDOMWindowProxy **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getOuterWindowWithId)\
  nsresult GetOuterWindowWithId(uint64_t aOuterWindowID, mozIDOMWindowProxy **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_getCurrentInnerWindowWithId)\
  nsresult GetCurrentInnerWindowWithId(uint64_t aInnerWindowID, mozIDOMWindow **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_registerWindow)\
  nsresult RegisterWindow(nsIAppWindow *aWindow); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_unregisterWindow)\
  nsresult UnregisterWindow(nsIAppWindow *aWindow); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_updateWindowTimeStamp)\
  nsresult UpdateWindowTimeStamp(nsIAppWindow *aWindow); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_addListener)\
  nsresult AddListener(nsIWindowMediatorListener *aListener); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIWindowMediator_removeListener)\
  nsresult RemoveListener(nsIWindowMediatorListener *aListener); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWINDOWMEDIATOR(_to) \
  NS_IMETHOD GetEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) override { return _to GetEnumerator(aWindowType, _retval); } \
  NS_IMETHOD GetAppWindowEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) override { return _to GetAppWindowEnumerator(aWindowType, _retval); } \
  NS_IMETHOD GetZOrderAppWindowEnumerator(const char16_t * aWindowType, bool aFrontToBack, nsISimpleEnumerator **_retval) override { return _to GetZOrderAppWindowEnumerator(aWindowType, aFrontToBack, _retval); } \
  NS_IMETHOD GetMostRecentWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) override { return _to GetMostRecentWindow(aWindowType, _retval); } \
  NS_IMETHOD GetMostRecentBrowserWindow(mozIDOMWindowProxy **_retval) override { return _to GetMostRecentBrowserWindow(_retval); } \
  NS_IMETHOD GetMostRecentNonPBWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) override { return _to GetMostRecentNonPBWindow(aWindowType, _retval); } \
  NS_IMETHOD GetMostRecentWindowBy(const char16_t * aWindowType, uint8_t aFilter, mozIDOMWindowProxy **_retval) override { return _to GetMostRecentWindowBy(aWindowType, aFilter, _retval); } \
  NS_IMETHOD GetOuterWindowWithId(uint64_t aOuterWindowID, mozIDOMWindowProxy **_retval) override { return _to GetOuterWindowWithId(aOuterWindowID, _retval); } \
  NS_IMETHOD GetCurrentInnerWindowWithId(uint64_t aInnerWindowID, mozIDOMWindow **_retval) override { return _to GetCurrentInnerWindowWithId(aInnerWindowID, _retval); } \
  NS_IMETHOD RegisterWindow(nsIAppWindow *aWindow) override { return _to RegisterWindow(aWindow); } \
  NS_IMETHOD UnregisterWindow(nsIAppWindow *aWindow) override { return _to UnregisterWindow(aWindow); } \
  NS_IMETHOD UpdateWindowTimeStamp(nsIAppWindow *aWindow) override { return _to UpdateWindowTimeStamp(aWindow); } \
  NS_IMETHOD AddListener(nsIWindowMediatorListener *aListener) override { return _to AddListener(aListener); } \
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *aListener) override { return _to RemoveListener(aListener); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWINDOWMEDIATOR(_to) \
  NS_IMETHOD GetEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnumerator(aWindowType, _retval); } \
  NS_IMETHOD GetAppWindowEnumerator(const char16_t * aWindowType, nsISimpleEnumerator **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAppWindowEnumerator(aWindowType, _retval); } \
  NS_IMETHOD GetZOrderAppWindowEnumerator(const char16_t * aWindowType, bool aFrontToBack, nsISimpleEnumerator **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetZOrderAppWindowEnumerator(aWindowType, aFrontToBack, _retval); } \
  NS_IMETHOD GetMostRecentWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMostRecentWindow(aWindowType, _retval); } \
  NS_IMETHOD GetMostRecentBrowserWindow(mozIDOMWindowProxy **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMostRecentBrowserWindow(_retval); } \
  NS_IMETHOD GetMostRecentNonPBWindow(const char16_t * aWindowType, mozIDOMWindowProxy **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMostRecentNonPBWindow(aWindowType, _retval); } \
  NS_IMETHOD GetMostRecentWindowBy(const char16_t * aWindowType, uint8_t aFilter, mozIDOMWindowProxy **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMostRecentWindowBy(aWindowType, aFilter, _retval); } \
  NS_IMETHOD GetOuterWindowWithId(uint64_t aOuterWindowID, mozIDOMWindowProxy **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOuterWindowWithId(aOuterWindowID, _retval); } \
  NS_IMETHOD GetCurrentInnerWindowWithId(uint64_t aInnerWindowID, mozIDOMWindow **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentInnerWindowWithId(aInnerWindowID, _retval); } \
  NS_IMETHOD RegisterWindow(nsIAppWindow *aWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterWindow(aWindow); } \
  NS_IMETHOD UnregisterWindow(nsIAppWindow *aWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterWindow(aWindow); } \
  NS_IMETHOD UpdateWindowTimeStamp(nsIAppWindow *aWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateWindowTimeStamp(aWindow); } \
  NS_IMETHOD AddListener(nsIWindowMediatorListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListener(aListener); } \
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveListener(aListener); } 


#endif /* __gen_nsIWindowMediator_h__ */
