/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/netwerk/base/nsIPermissionManager.idl
 */

#ifndef __gen_nsIPermissionManager_h__
#define __gen_nsIPermissionManager_h__


#include "nsISupports.h"

#include "nsTArray.h"

#include "js/Value.h"

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

class nsIPermission; /* forward declaration */


/* starting interface:    nsIPermissionManager */
#define NS_IPERMISSIONMANAGER_IID_STR "4dcb3851-eba2-4e42-b236-82d2596fca22"

#define NS_IPERMISSIONMANAGER_IID \
  {0x4dcb3851, 0xeba2, 0x4e42, \
    { 0xb2, 0x36, 0x82, 0xd2, 0x59, 0x6f, 0xca, 0x22 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIPermissionManager) nsIPermissionManager : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IPERMISSIONMANAGER_IID)

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

  enum {
    UNKNOWN_ACTION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_UNKNOWN_ACTION) = 0U,
    ALLOW_ACTION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_ALLOW_ACTION) = 1U,
    DENY_ACTION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_DENY_ACTION) = 2U,
    PROMPT_ACTION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_PROMPT_ACTION) = 3U,
    MAX_VALID_ACTION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_MAX_VALID_ACTION) = 3U,
    EXPIRE_NEVER MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_EXPIRE_NEVER) = 0U,
    EXPIRE_SESSION MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_EXPIRE_SESSION) = 1U,
    EXPIRE_TIME MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_EXPIRE_TIME) = 2U,
    EXPIRE_POLICY MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_EXPIRE_POLICY) = 3U,
    EXPIRE_SESSION_TAB MOZ_BINDING(binding_to, idl, const, XPIDL_nsIPermissionManager_EXPIRE_SESSION_TAB) = 4U
  };

  /* Array<nsIPermission> getAllForPrincipal (in nsIPrincipal principal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllForPrincipal)
  NS_IMETHOD GetAllForPrincipal(nsIPrincipal *principal, nsTArray<RefPtr<nsIPermission>>& _retval) = 0;

  /* Array<nsIPermission> getAllWithTypePrefix (in ACString prefix); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllWithTypePrefix)
  NS_IMETHOD GetAllWithTypePrefix(const nsACString& prefix, nsTArray<RefPtr<nsIPermission>>& _retval) = 0;

  /* Array<nsIPermission> getAllByTypes (in Array<ACString> types); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllByTypes)
  NS_IMETHOD GetAllByTypes(const nsTArray<nsCString >& types, nsTArray<RefPtr<nsIPermission>>& _retval) = 0;

  /* Array<nsIPermission> getAllByTypeSince (in ACString type, in int64_t since); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllByTypeSince)
  NS_IMETHOD GetAllByTypeSince(const nsACString& type, int64_t since, nsTArray<RefPtr<nsIPermission>>& _retval) = 0;

  /* void addFromPrincipal (in nsIPrincipal principal, in ACString type, in uint32_t permission, [optional] in uint32_t expireType, [optional] in int64_t expireTime); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addFromPrincipal)
  NS_IMETHOD AddFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint32_t expireType, int64_t expireTime) = 0;

  /* void testAddFromPrincipalByTime (in nsIPrincipal principal, in ACString type, in uint32_t permission, in int64_t modificationTime); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testAddFromPrincipalByTime)
  NS_IMETHOD TestAddFromPrincipalByTime(nsIPrincipal *principal, const nsACString& type, uint32_t permission, int64_t modificationTime) = 0;

  /* void addFromPrincipalAndPersistInPrivateBrowsing (in nsIPrincipal principal, in ACString type, in uint32_t permission); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addFromPrincipalAndPersistInPrivateBrowsing)
  NS_IMETHOD AddFromPrincipalAndPersistInPrivateBrowsing(nsIPrincipal *principal, const nsACString& type, uint32_t permission) = 0;

  /* void addDefaultFromPrincipal (in nsIPrincipal principal, in ACString type, in uint32_t permission); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addDefaultFromPrincipal)
  NS_IMETHOD AddDefaultFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission) = 0;

  /* void removeFromPrincipal (in nsIPrincipal principal, in ACString type); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeFromPrincipal)
  NS_IMETHOD RemoveFromPrincipal(nsIPrincipal *principal, const nsACString& type) = 0;

  /* void removePermission (in nsIPermission perm); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removePermission)
  NS_IMETHOD RemovePermission(nsIPermission *perm) = 0;

  /* void removeAll (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAll)
  NS_IMETHOD RemoveAll(void) = 0;

  /* void removeAllSince (in int64_t since); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllSince)
  NS_IMETHOD RemoveAllSince(int64_t since) = 0;

  /* void removeByType (in ACString type); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeByType)
  NS_IMETHOD RemoveByType(const nsACString& type) = 0;

  /* void removeAllExceptTypes (in Array<ACString> typeExceptions); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllExceptTypes)
  NS_IMETHOD RemoveAllExceptTypes(const nsTArray<nsCString >& typeExceptions) = 0;

  /* void removeByTypeSince (in ACString type, in int64_t since); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeByTypeSince)
  NS_IMETHOD RemoveByTypeSince(const nsACString& type, int64_t since) = 0;

  /* void removeAllSinceWithTypeExceptions (in int64_t since, in Array<ACString> typeExceptions); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllSinceWithTypeExceptions)
  NS_IMETHOD RemoveAllSinceWithTypeExceptions(int64_t since, const nsTArray<nsCString >& typeExceptions) = 0;

  /* uint32_t testPermissionFromPrincipal (in nsIPrincipal principal, in ACString type); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testPermissionFromPrincipal)
  NS_IMETHOD TestPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) = 0;

  /* uint32_t testExactPermissionFromPrincipal (in nsIPrincipal principal, in ACString type); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testExactPermissionFromPrincipal)
  NS_IMETHOD TestExactPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) = 0;

  /* uint32_t testExactPermanentPermission (in nsIPrincipal principal, in ACString type); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testExactPermanentPermission)
  NS_IMETHOD TestExactPermanentPermission(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) = 0;

  /* nsIPermission getPermissionObject (in nsIPrincipal principal, in ACString type, in boolean exactHost); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getPermissionObject)
  NS_IMETHOD GetPermissionObject(nsIPrincipal *principal, const nsACString& type, bool exactHost, nsIPermission **_retval) = 0;

  /* readonly attribute Array<nsIPermission> all; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPermissionManager_all)
  NS_IMETHOD GetAll(nsTArray<RefPtr<nsIPermission>>& aAll) = 0;

  /* void removePermissionsWithAttributes (in AString patternAsJSON, in Array<ACString> typeInclusions, in Array<ACString> typeExceptions); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removePermissionsWithAttributes)
  NS_IMETHOD RemovePermissionsWithAttributes(const nsAString& patternAsJSON, const nsTArray<nsCString >& typeInclusions, const nsTArray<nsCString >& typeExceptions) = 0;

  /* void updateLastInteractionForPrincipal (in nsIPrincipal principal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_updateLastInteractionForPrincipal)
  NS_IMETHOD UpdateLastInteractionForPrincipal(nsIPrincipal *principal) = 0;

  /* [implicit_jscontext] Promise removeOrphanedInteractionRecords (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeOrphanedInteractionRecords)
  NS_IMETHOD RemoveOrphanedInteractionRecords(JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext] Promise testFlushPendingWrites (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testFlushPendingWrites)
  NS_IMETHOD TestFlushPendingWrites(JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* void addFromPrincipalForBrowser (in nsIPrincipal principal, in ACString type, in uint32_t permission, in uint64_t browserId, [optional] in int64_t expireTimeMS); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addFromPrincipalForBrowser)
  NS_IMETHOD AddFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint64_t browserId, int64_t expireTimeMS) = 0;

  /* void removeFromPrincipalForBrowser (in nsIPrincipal principal, in ACString type, in uint64_t browserId); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeFromPrincipalForBrowser)
  NS_IMETHOD RemoveFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId) = 0;

  /* void removeAllForBrowser (in uint64_t browserId); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllForBrowser)
  NS_IMETHOD RemoveAllForBrowser(uint64_t browserId) = 0;

  /* void removeByActionForBrowser (in uint64_t browserId, in uint32_t permission); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeByActionForBrowser)
  NS_IMETHOD RemoveByActionForBrowser(uint64_t browserId, uint32_t permission) = 0;

  /* uint32_t testForBrowser (in nsIPrincipal principal, in ACString type, in uint64_t browserId); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testForBrowser)
  NS_IMETHOD TestForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, uint32_t *_retval) = 0;

  /* nsIPermission getForBrowser (in nsIPrincipal principal, in ACString type, in uint64_t browserId); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getForBrowser)
  NS_IMETHOD GetForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, nsIPermission **_retval) = 0;

  /* Array<nsIPermission> getAllForBrowser (in nsIPrincipal principal, in uint64_t browserId); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllForBrowser)
  NS_IMETHOD GetAllForBrowser(nsIPrincipal *principal, uint64_t browserId, nsTArray<RefPtr<nsIPermission>>& _retval) = 0;

  /* void copyBrowserPermissions (in uint64_t srcBrowserId, in uint64_t destBrowserId); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_copyBrowserPermissions)
  NS_IMETHOD CopyBrowserPermissions(uint64_t srcBrowserId, uint64_t destBrowserId) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIPERMISSIONMANAGER \
  NS_IMETHOD GetAllForPrincipal(nsIPrincipal *principal, nsTArray<RefPtr<nsIPermission>>& _retval) override; \
  NS_IMETHOD GetAllWithTypePrefix(const nsACString& prefix, nsTArray<RefPtr<nsIPermission>>& _retval) override; \
  NS_IMETHOD GetAllByTypes(const nsTArray<nsCString >& types, nsTArray<RefPtr<nsIPermission>>& _retval) override; \
  NS_IMETHOD GetAllByTypeSince(const nsACString& type, int64_t since, nsTArray<RefPtr<nsIPermission>>& _retval) override; \
  NS_IMETHOD AddFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint32_t expireType, int64_t expireTime) override; \
  NS_IMETHOD TestAddFromPrincipalByTime(nsIPrincipal *principal, const nsACString& type, uint32_t permission, int64_t modificationTime) override; \
  NS_IMETHOD AddFromPrincipalAndPersistInPrivateBrowsing(nsIPrincipal *principal, const nsACString& type, uint32_t permission) override; \
  NS_IMETHOD AddDefaultFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission) override; \
  NS_IMETHOD RemoveFromPrincipal(nsIPrincipal *principal, const nsACString& type) override; \
  NS_IMETHOD RemovePermission(nsIPermission *perm) override; \
  NS_IMETHOD RemoveAll(void) override; \
  NS_IMETHOD RemoveAllSince(int64_t since) override; \
  NS_IMETHOD RemoveByType(const nsACString& type) override; \
  NS_IMETHOD RemoveAllExceptTypes(const nsTArray<nsCString >& typeExceptions) override; \
  NS_IMETHOD RemoveByTypeSince(const nsACString& type, int64_t since) override; \
  NS_IMETHOD RemoveAllSinceWithTypeExceptions(int64_t since, const nsTArray<nsCString >& typeExceptions) override; \
  NS_IMETHOD TestPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override; \
  NS_IMETHOD TestExactPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override; \
  NS_IMETHOD TestExactPermanentPermission(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override; \
  NS_IMETHOD GetPermissionObject(nsIPrincipal *principal, const nsACString& type, bool exactHost, nsIPermission **_retval) override; \
  NS_IMETHOD GetAll(nsTArray<RefPtr<nsIPermission>>& aAll) override; \
  NS_IMETHOD RemovePermissionsWithAttributes(const nsAString& patternAsJSON, const nsTArray<nsCString >& typeInclusions, const nsTArray<nsCString >& typeExceptions) override; \
  NS_IMETHOD UpdateLastInteractionForPrincipal(nsIPrincipal *principal) override; \
  NS_IMETHOD RemoveOrphanedInteractionRecords(JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD TestFlushPendingWrites(JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD AddFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint64_t browserId, int64_t expireTimeMS) override; \
  NS_IMETHOD RemoveFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId) override; \
  NS_IMETHOD RemoveAllForBrowser(uint64_t browserId) override; \
  NS_IMETHOD RemoveByActionForBrowser(uint64_t browserId, uint32_t permission) override; \
  NS_IMETHOD TestForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, uint32_t *_retval) override; \
  NS_IMETHOD GetForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, nsIPermission **_retval) override; \
  NS_IMETHOD GetAllForBrowser(nsIPrincipal *principal, uint64_t browserId, nsTArray<RefPtr<nsIPermission>>& _retval) override; \
  NS_IMETHOD CopyBrowserPermissions(uint64_t srcBrowserId, uint64_t destBrowserId) 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_NSIPERMISSIONMANAGER \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllForPrincipal)\
  nsresult GetAllForPrincipal(nsIPrincipal *principal, nsTArray<RefPtr<nsIPermission>>& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllWithTypePrefix)\
  nsresult GetAllWithTypePrefix(const nsACString& prefix, nsTArray<RefPtr<nsIPermission>>& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllByTypes)\
  nsresult GetAllByTypes(const nsTArray<nsCString >& types, nsTArray<RefPtr<nsIPermission>>& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllByTypeSince)\
  nsresult GetAllByTypeSince(const nsACString& type, int64_t since, nsTArray<RefPtr<nsIPermission>>& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addFromPrincipal)\
  nsresult AddFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint32_t expireType, int64_t expireTime); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testAddFromPrincipalByTime)\
  nsresult TestAddFromPrincipalByTime(nsIPrincipal *principal, const nsACString& type, uint32_t permission, int64_t modificationTime); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addFromPrincipalAndPersistInPrivateBrowsing)\
  nsresult AddFromPrincipalAndPersistInPrivateBrowsing(nsIPrincipal *principal, const nsACString& type, uint32_t permission); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addDefaultFromPrincipal)\
  nsresult AddDefaultFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeFromPrincipal)\
  nsresult RemoveFromPrincipal(nsIPrincipal *principal, const nsACString& type); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removePermission)\
  nsresult RemovePermission(nsIPermission *perm); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAll)\
  nsresult RemoveAll(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllSince)\
  nsresult RemoveAllSince(int64_t since); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeByType)\
  nsresult RemoveByType(const nsACString& type); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllExceptTypes)\
  nsresult RemoveAllExceptTypes(const nsTArray<nsCString >& typeExceptions); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeByTypeSince)\
  nsresult RemoveByTypeSince(const nsACString& type, int64_t since); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllSinceWithTypeExceptions)\
  nsresult RemoveAllSinceWithTypeExceptions(int64_t since, const nsTArray<nsCString >& typeExceptions); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testPermissionFromPrincipal)\
  nsresult TestPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testExactPermissionFromPrincipal)\
  nsresult TestExactPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testExactPermanentPermission)\
  nsresult TestExactPermanentPermission(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getPermissionObject)\
  nsresult GetPermissionObject(nsIPrincipal *principal, const nsACString& type, bool exactHost, nsIPermission **_retval); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIPermissionManager_all)\
  nsresult GetAll(nsTArray<RefPtr<nsIPermission>>& aAll); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removePermissionsWithAttributes)\
  nsresult RemovePermissionsWithAttributes(const nsAString& patternAsJSON, const nsTArray<nsCString >& typeInclusions, const nsTArray<nsCString >& typeExceptions); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_updateLastInteractionForPrincipal)\
  nsresult UpdateLastInteractionForPrincipal(nsIPrincipal *principal); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeOrphanedInteractionRecords)\
  nsresult RemoveOrphanedInteractionRecords(JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testFlushPendingWrites)\
  nsresult TestFlushPendingWrites(JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_addFromPrincipalForBrowser)\
  nsresult AddFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint64_t browserId, int64_t expireTimeMS); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeFromPrincipalForBrowser)\
  nsresult RemoveFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeAllForBrowser)\
  nsresult RemoveAllForBrowser(uint64_t browserId); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_removeByActionForBrowser)\
  nsresult RemoveByActionForBrowser(uint64_t browserId, uint32_t permission); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_testForBrowser)\
  nsresult TestForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, uint32_t *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getForBrowser)\
  nsresult GetForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, nsIPermission **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_getAllForBrowser)\
  nsresult GetAllForBrowser(nsIPrincipal *principal, uint64_t browserId, nsTArray<RefPtr<nsIPermission>>& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIPermissionManager_copyBrowserPermissions)\
  nsresult CopyBrowserPermissions(uint64_t srcBrowserId, uint64_t destBrowserId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIPERMISSIONMANAGER(_to) \
  NS_IMETHOD GetAllForPrincipal(nsIPrincipal *principal, nsTArray<RefPtr<nsIPermission>>& _retval) override { return _to GetAllForPrincipal(principal, _retval); } \
  NS_IMETHOD GetAllWithTypePrefix(const nsACString& prefix, nsTArray<RefPtr<nsIPermission>>& _retval) override { return _to GetAllWithTypePrefix(prefix, _retval); } \
  NS_IMETHOD GetAllByTypes(const nsTArray<nsCString >& types, nsTArray<RefPtr<nsIPermission>>& _retval) override { return _to GetAllByTypes(types, _retval); } \
  NS_IMETHOD GetAllByTypeSince(const nsACString& type, int64_t since, nsTArray<RefPtr<nsIPermission>>& _retval) override { return _to GetAllByTypeSince(type, since, _retval); } \
  NS_IMETHOD AddFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint32_t expireType, int64_t expireTime) override { return _to AddFromPrincipal(principal, type, permission, expireType, expireTime); } \
  NS_IMETHOD TestAddFromPrincipalByTime(nsIPrincipal *principal, const nsACString& type, uint32_t permission, int64_t modificationTime) override { return _to TestAddFromPrincipalByTime(principal, type, permission, modificationTime); } \
  NS_IMETHOD AddFromPrincipalAndPersistInPrivateBrowsing(nsIPrincipal *principal, const nsACString& type, uint32_t permission) override { return _to AddFromPrincipalAndPersistInPrivateBrowsing(principal, type, permission); } \
  NS_IMETHOD AddDefaultFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission) override { return _to AddDefaultFromPrincipal(principal, type, permission); } \
  NS_IMETHOD RemoveFromPrincipal(nsIPrincipal *principal, const nsACString& type) override { return _to RemoveFromPrincipal(principal, type); } \
  NS_IMETHOD RemovePermission(nsIPermission *perm) override { return _to RemovePermission(perm); } \
  NS_IMETHOD RemoveAll(void) override { return _to RemoveAll(); } \
  NS_IMETHOD RemoveAllSince(int64_t since) override { return _to RemoveAllSince(since); } \
  NS_IMETHOD RemoveByType(const nsACString& type) override { return _to RemoveByType(type); } \
  NS_IMETHOD RemoveAllExceptTypes(const nsTArray<nsCString >& typeExceptions) override { return _to RemoveAllExceptTypes(typeExceptions); } \
  NS_IMETHOD RemoveByTypeSince(const nsACString& type, int64_t since) override { return _to RemoveByTypeSince(type, since); } \
  NS_IMETHOD RemoveAllSinceWithTypeExceptions(int64_t since, const nsTArray<nsCString >& typeExceptions) override { return _to RemoveAllSinceWithTypeExceptions(since, typeExceptions); } \
  NS_IMETHOD TestPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override { return _to TestPermissionFromPrincipal(principal, type, _retval); } \
  NS_IMETHOD TestExactPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override { return _to TestExactPermissionFromPrincipal(principal, type, _retval); } \
  NS_IMETHOD TestExactPermanentPermission(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override { return _to TestExactPermanentPermission(principal, type, _retval); } \
  NS_IMETHOD GetPermissionObject(nsIPrincipal *principal, const nsACString& type, bool exactHost, nsIPermission **_retval) override { return _to GetPermissionObject(principal, type, exactHost, _retval); } \
  NS_IMETHOD GetAll(nsTArray<RefPtr<nsIPermission>>& aAll) override { return _to GetAll(aAll); } \
  NS_IMETHOD RemovePermissionsWithAttributes(const nsAString& patternAsJSON, const nsTArray<nsCString >& typeInclusions, const nsTArray<nsCString >& typeExceptions) override { return _to RemovePermissionsWithAttributes(patternAsJSON, typeInclusions, typeExceptions); } \
  NS_IMETHOD UpdateLastInteractionForPrincipal(nsIPrincipal *principal) override { return _to UpdateLastInteractionForPrincipal(principal); } \
  NS_IMETHOD RemoveOrphanedInteractionRecords(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to RemoveOrphanedInteractionRecords(cx, _retval); } \
  NS_IMETHOD TestFlushPendingWrites(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to TestFlushPendingWrites(cx, _retval); } \
  NS_IMETHOD AddFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint64_t browserId, int64_t expireTimeMS) override { return _to AddFromPrincipalForBrowser(principal, type, permission, browserId, expireTimeMS); } \
  NS_IMETHOD RemoveFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId) override { return _to RemoveFromPrincipalForBrowser(principal, type, browserId); } \
  NS_IMETHOD RemoveAllForBrowser(uint64_t browserId) override { return _to RemoveAllForBrowser(browserId); } \
  NS_IMETHOD RemoveByActionForBrowser(uint64_t browserId, uint32_t permission) override { return _to RemoveByActionForBrowser(browserId, permission); } \
  NS_IMETHOD TestForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, uint32_t *_retval) override { return _to TestForBrowser(principal, type, browserId, _retval); } \
  NS_IMETHOD GetForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, nsIPermission **_retval) override { return _to GetForBrowser(principal, type, browserId, _retval); } \
  NS_IMETHOD GetAllForBrowser(nsIPrincipal *principal, uint64_t browserId, nsTArray<RefPtr<nsIPermission>>& _retval) override { return _to GetAllForBrowser(principal, browserId, _retval); } \
  NS_IMETHOD CopyBrowserPermissions(uint64_t srcBrowserId, uint64_t destBrowserId) override { return _to CopyBrowserPermissions(srcBrowserId, destBrowserId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIPERMISSIONMANAGER(_to) \
  NS_IMETHOD GetAllForPrincipal(nsIPrincipal *principal, nsTArray<RefPtr<nsIPermission>>& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllForPrincipal(principal, _retval); } \
  NS_IMETHOD GetAllWithTypePrefix(const nsACString& prefix, nsTArray<RefPtr<nsIPermission>>& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllWithTypePrefix(prefix, _retval); } \
  NS_IMETHOD GetAllByTypes(const nsTArray<nsCString >& types, nsTArray<RefPtr<nsIPermission>>& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllByTypes(types, _retval); } \
  NS_IMETHOD GetAllByTypeSince(const nsACString& type, int64_t since, nsTArray<RefPtr<nsIPermission>>& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllByTypeSince(type, since, _retval); } \
  NS_IMETHOD AddFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint32_t expireType, int64_t expireTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFromPrincipal(principal, type, permission, expireType, expireTime); } \
  NS_IMETHOD TestAddFromPrincipalByTime(nsIPrincipal *principal, const nsACString& type, uint32_t permission, int64_t modificationTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestAddFromPrincipalByTime(principal, type, permission, modificationTime); } \
  NS_IMETHOD AddFromPrincipalAndPersistInPrivateBrowsing(nsIPrincipal *principal, const nsACString& type, uint32_t permission) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFromPrincipalAndPersistInPrivateBrowsing(principal, type, permission); } \
  NS_IMETHOD AddDefaultFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t permission) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDefaultFromPrincipal(principal, type, permission); } \
  NS_IMETHOD RemoveFromPrincipal(nsIPrincipal *principal, const nsACString& type) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFromPrincipal(principal, type); } \
  NS_IMETHOD RemovePermission(nsIPermission *perm) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemovePermission(perm); } \
  NS_IMETHOD RemoveAll(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAll(); } \
  NS_IMETHOD RemoveAllSince(int64_t since) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllSince(since); } \
  NS_IMETHOD RemoveByType(const nsACString& type) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveByType(type); } \
  NS_IMETHOD RemoveAllExceptTypes(const nsTArray<nsCString >& typeExceptions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllExceptTypes(typeExceptions); } \
  NS_IMETHOD RemoveByTypeSince(const nsACString& type, int64_t since) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveByTypeSince(type, since); } \
  NS_IMETHOD RemoveAllSinceWithTypeExceptions(int64_t since, const nsTArray<nsCString >& typeExceptions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllSinceWithTypeExceptions(since, typeExceptions); } \
  NS_IMETHOD TestPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestPermissionFromPrincipal(principal, type, _retval); } \
  NS_IMETHOD TestExactPermissionFromPrincipal(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestExactPermissionFromPrincipal(principal, type, _retval); } \
  NS_IMETHOD TestExactPermanentPermission(nsIPrincipal *principal, const nsACString& type, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestExactPermanentPermission(principal, type, _retval); } \
  NS_IMETHOD GetPermissionObject(nsIPrincipal *principal, const nsACString& type, bool exactHost, nsIPermission **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPermissionObject(principal, type, exactHost, _retval); } \
  NS_IMETHOD GetAll(nsTArray<RefPtr<nsIPermission>>& aAll) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAll(aAll); } \
  NS_IMETHOD RemovePermissionsWithAttributes(const nsAString& patternAsJSON, const nsTArray<nsCString >& typeInclusions, const nsTArray<nsCString >& typeExceptions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemovePermissionsWithAttributes(patternAsJSON, typeInclusions, typeExceptions); } \
  NS_IMETHOD UpdateLastInteractionForPrincipal(nsIPrincipal *principal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateLastInteractionForPrincipal(principal); } \
  NS_IMETHOD RemoveOrphanedInteractionRecords(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveOrphanedInteractionRecords(cx, _retval); } \
  NS_IMETHOD TestFlushPendingWrites(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestFlushPendingWrites(cx, _retval); } \
  NS_IMETHOD AddFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint32_t permission, uint64_t browserId, int64_t expireTimeMS) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFromPrincipalForBrowser(principal, type, permission, browserId, expireTimeMS); } \
  NS_IMETHOD RemoveFromPrincipalForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFromPrincipalForBrowser(principal, type, browserId); } \
  NS_IMETHOD RemoveAllForBrowser(uint64_t browserId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllForBrowser(browserId); } \
  NS_IMETHOD RemoveByActionForBrowser(uint64_t browserId, uint32_t permission) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveByActionForBrowser(browserId, permission); } \
  NS_IMETHOD TestForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestForBrowser(principal, type, browserId, _retval); } \
  NS_IMETHOD GetForBrowser(nsIPrincipal *principal, const nsACString& type, uint64_t browserId, nsIPermission **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetForBrowser(principal, type, browserId, _retval); } \
  NS_IMETHOD GetAllForBrowser(nsIPrincipal *principal, uint64_t browserId, nsTArray<RefPtr<nsIPermission>>& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllForBrowser(principal, browserId, _retval); } \
  NS_IMETHOD CopyBrowserPermissions(uint64_t srcBrowserId, uint64_t destBrowserId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyBrowserPermissions(srcBrowserId, destBrowserId); } 

// %{C++:416-419
#define NS_PERMISSIONMANAGER_CONTRACTID "@mozilla.org/permissionmanager;1"

#define PERM_CHANGE_NOTIFICATION "perm-changed"
#define BROWSER_PERM_CHANGE_NOTIFICATION "browser-perm-changed"
// %}

#endif /* __gen_nsIPermissionManager_h__ */
