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

#ifndef __gen_nsIEnterprisePolicies_h__
#define __gen_nsIEnterprisePolicies_h__


#include "nsISupports.h"

#include "nsIURI.h"

#include "js/Value.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

/* starting interface:    nsIEnterprisePolicies */
#define NS_IENTERPRISEPOLICIES_IID_STR "6a568972-cc91-4bf5-963e-3768f3319b8a"

#define NS_IENTERPRISEPOLICIES_IID \
  {0x6a568972, 0xcc91, 0x4bf5, \
    { 0x96, 0x3e, 0x37, 0x68, 0xf3, 0x31, 0x9b, 0x8a }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIEnterprisePolicies) nsIEnterprisePolicies : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IENTERPRISEPOLICIES_IID)

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

  enum {
    UNINITIALIZED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIEnterprisePolicies_UNINITIALIZED) = -1,
    INACTIVE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIEnterprisePolicies_INACTIVE) = 0,
    ACTIVE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIEnterprisePolicies_ACTIVE) = 1,
    FAILED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIEnterprisePolicies_FAILED) = 2
  };

  /* readonly attribute short status; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIEnterprisePolicies_status)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetStatus(int16_t *aStatus) = 0;

  /* readonly attribute boolean isEnterprise; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIEnterprisePolicies_isEnterprise)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetIsEnterprise(bool *aIsEnterprise) = 0;

  /* boolean isAllowed (in ACString feature); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isAllowed)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD IsAllowed(const nsACString& feature, bool *_retval) = 0;

  /* boolean isAllowedForURI (in ACString feature, in nsIURI uri); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isAllowedForURI)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD IsAllowedForURI(const nsACString& feature, nsIURI *uri, bool *_retval) = 0;

  /* jsval getActivePolicies (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getActivePolicies)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetActivePolicies(JS::MutableHandle<JS::Value> _retval) = 0;

  /* jsval getSupportMenu (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getSupportMenu)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetSupportMenu(JS::MutableHandle<JS::Value> _retval) = 0;

  /* jsval getExtensionPolicy (in ACString extensionID); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getExtensionPolicy)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetExtensionPolicy(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) = 0;

  /* jsval getExtensionSettings (in ACString extensionID); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getExtensionSettings)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetExtensionSettings(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) = 0;

  /* boolean mayInstallAddon (in jsval addon); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_mayInstallAddon)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD MayInstallAddon(JS::Handle<JS::Value> addon, bool *_retval) = 0;

  /* boolean isAddonRequiredByPolicy (in ACString addonID); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isAddonRequiredByPolicy)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD IsAddonRequiredByPolicy(const nsACString& addonID, bool *_retval) = 0;

  /* boolean allowedInstallSource (in nsIURI uri); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_allowedInstallSource)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD AllowedInstallSource(nsIURI *uri, bool *_retval) = 0;

  /* boolean isExemptExecutableExtension (in ACString url, in ACString extension); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isExemptExecutableExtension)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD IsExemptExecutableExtension(const nsACString& url, const nsACString& extension, bool *_retval) = 0;

  /* unsigned long getContainerForURI (in nsIURI uri); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getContainerForURI)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContainerForURI(nsIURI *uri, uint32_t *_retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIENTERPRISEPOLICIES \
  NS_IMETHOD GetStatus(int16_t *aStatus) override; \
  NS_IMETHOD GetIsEnterprise(bool *aIsEnterprise) override; \
  NS_IMETHOD IsAllowed(const nsACString& feature, bool *_retval) override; \
  NS_IMETHOD IsAllowedForURI(const nsACString& feature, nsIURI *uri, bool *_retval) override; \
  NS_IMETHOD GetActivePolicies(JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD GetSupportMenu(JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD GetExtensionPolicy(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD GetExtensionSettings(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD MayInstallAddon(JS::Handle<JS::Value> addon, bool *_retval) override; \
  NS_IMETHOD IsAddonRequiredByPolicy(const nsACString& addonID, bool *_retval) override; \
  NS_IMETHOD AllowedInstallSource(nsIURI *uri, bool *_retval) override; \
  NS_IMETHOD IsExemptExecutableExtension(const nsACString& url, const nsACString& extension, bool *_retval) override; \
  NS_IMETHOD GetContainerForURI(nsIURI *uri, uint32_t *_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_NSIENTERPRISEPOLICIES \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIEnterprisePolicies_status)\
  nsresult GetStatus(int16_t *aStatus); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIEnterprisePolicies_isEnterprise)\
  nsresult GetIsEnterprise(bool *aIsEnterprise); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isAllowed)\
  nsresult IsAllowed(const nsACString& feature, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isAllowedForURI)\
  nsresult IsAllowedForURI(const nsACString& feature, nsIURI *uri, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getActivePolicies)\
  nsresult GetActivePolicies(JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getSupportMenu)\
  nsresult GetSupportMenu(JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getExtensionPolicy)\
  nsresult GetExtensionPolicy(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getExtensionSettings)\
  nsresult GetExtensionSettings(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_mayInstallAddon)\
  nsresult MayInstallAddon(JS::Handle<JS::Value> addon, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isAddonRequiredByPolicy)\
  nsresult IsAddonRequiredByPolicy(const nsACString& addonID, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_allowedInstallSource)\
  nsresult AllowedInstallSource(nsIURI *uri, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_isExemptExecutableExtension)\
  nsresult IsExemptExecutableExtension(const nsACString& url, const nsACString& extension, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIEnterprisePolicies_getContainerForURI)\
  nsresult GetContainerForURI(nsIURI *uri, uint32_t *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIENTERPRISEPOLICIES(_to) \
  NS_IMETHOD GetStatus(int16_t *aStatus) override { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetIsEnterprise(bool *aIsEnterprise) override { return _to GetIsEnterprise(aIsEnterprise); } \
  NS_IMETHOD IsAllowed(const nsACString& feature, bool *_retval) override { return _to IsAllowed(feature, _retval); } \
  NS_IMETHOD IsAllowedForURI(const nsACString& feature, nsIURI *uri, bool *_retval) override { return _to IsAllowedForURI(feature, uri, _retval); } \
  NS_IMETHOD GetActivePolicies(JS::MutableHandle<JS::Value> _retval) override { return _to GetActivePolicies(_retval); } \
  NS_IMETHOD GetSupportMenu(JS::MutableHandle<JS::Value> _retval) override { return _to GetSupportMenu(_retval); } \
  NS_IMETHOD GetExtensionPolicy(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) override { return _to GetExtensionPolicy(extensionID, _retval); } \
  NS_IMETHOD GetExtensionSettings(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) override { return _to GetExtensionSettings(extensionID, _retval); } \
  NS_IMETHOD MayInstallAddon(JS::Handle<JS::Value> addon, bool *_retval) override { return _to MayInstallAddon(addon, _retval); } \
  NS_IMETHOD IsAddonRequiredByPolicy(const nsACString& addonID, bool *_retval) override { return _to IsAddonRequiredByPolicy(addonID, _retval); } \
  NS_IMETHOD AllowedInstallSource(nsIURI *uri, bool *_retval) override { return _to AllowedInstallSource(uri, _retval); } \
  NS_IMETHOD IsExemptExecutableExtension(const nsACString& url, const nsACString& extension, bool *_retval) override { return _to IsExemptExecutableExtension(url, extension, _retval); } \
  NS_IMETHOD GetContainerForURI(nsIURI *uri, uint32_t *_retval) override { return _to GetContainerForURI(uri, _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_NSIENTERPRISEPOLICIES(_to) \
  NS_IMETHOD GetStatus(int16_t *aStatus) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetIsEnterprise(bool *aIsEnterprise) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsEnterprise(aIsEnterprise); } \
  NS_IMETHOD IsAllowed(const nsACString& feature, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsAllowed(feature, _retval); } \
  NS_IMETHOD IsAllowedForURI(const nsACString& feature, nsIURI *uri, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsAllowedForURI(feature, uri, _retval); } \
  NS_IMETHOD GetActivePolicies(JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActivePolicies(_retval); } \
  NS_IMETHOD GetSupportMenu(JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportMenu(_retval); } \
  NS_IMETHOD GetExtensionPolicy(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtensionPolicy(extensionID, _retval); } \
  NS_IMETHOD GetExtensionSettings(const nsACString& extensionID, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtensionSettings(extensionID, _retval); } \
  NS_IMETHOD MayInstallAddon(JS::Handle<JS::Value> addon, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MayInstallAddon(addon, _retval); } \
  NS_IMETHOD IsAddonRequiredByPolicy(const nsACString& addonID, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsAddonRequiredByPolicy(addonID, _retval); } \
  NS_IMETHOD AllowedInstallSource(nsIURI *uri, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AllowedInstallSource(uri, _retval); } \
  NS_IMETHOD IsExemptExecutableExtension(const nsACString& url, const nsACString& extension, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsExemptExecutableExtension(url, extension, _retval); } \
  NS_IMETHOD GetContainerForURI(nsIURI *uri, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContainerForURI(uri, _retval); } 


#endif /* __gen_nsIEnterprisePolicies_h__ */
