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

#ifndef __gen_nsIRFPService_h__
#define __gen_nsIRFPService_h__


#include "nsISupports.h"

#include "nsIFingerprintingWebCompatService.h"

#include "nsIRFPTargetSetIDL.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 nsIChannel; /* forward declaration */


/* starting interface:    nsIRFPService */
#define NS_IRFPSERVICE_IID_STR "20093b2e-d5d5-4ce0-8355-96b8d2dc7ff5"

#define NS_IRFPSERVICE_IID \
  {0x20093b2e, 0xd5d5, 0x4ce0, \
    { 0x83, 0x55, 0x96, 0xb8, 0xd2, 0xdc, 0x7f, 0xf5 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIRFPService) nsIRFPService : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IRFPSERVICE_IID)

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

  /* void setFingerprintingOverrides (in Array<nsIFingerprintingOverride> aOverrides); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_setFingerprintingOverrides)
  NS_IMETHOD SetFingerprintingOverrides(const nsTArray<RefPtr<nsIFingerprintingOverride>>& aOverrides) = 0;

  /* nsIRFPTargetSetIDL getFingerprintingOverrides (in ACString aDomainKey); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_getFingerprintingOverrides)
  NS_IMETHOD GetFingerprintingOverrides(const nsACString& aDomainKey, nsIRFPTargetSetIDL **_retval) = 0;

  /* void cleanAllOverrides (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanAllOverrides)
  NS_IMETHOD CleanAllOverrides(void) = 0;

  /* readonly attribute nsIRFPTargetSetIDL enabledFingerprintingProtectionsBaseline; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRFPService_enabledFingerprintingProtectionsBaseline)
  NS_IMETHOD GetEnabledFingerprintingProtectionsBaseline(nsIRFPTargetSetIDL **aEnabledFingerprintingProtectionsBaseline) = 0;

  /* readonly attribute nsIRFPTargetSetIDL enabledFingerprintingProtections; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRFPService_enabledFingerprintingProtections)
  NS_IMETHOD GetEnabledFingerprintingProtections(nsIRFPTargetSetIDL **aEnabledFingerprintingProtections) = 0;

  /* void cleanAllRandomKeys (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanAllRandomKeys)
  NS_IMETHOD CleanAllRandomKeys(void) = 0;

  /* void cleanRandomKeyByPrincipal (in nsIPrincipal aPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyByPrincipal)
  NS_IMETHOD CleanRandomKeyByPrincipal(nsIPrincipal *aPrincipal) = 0;

  /* [implicit_jscontext] void cleanRandomKeyBySite (in ACString aSchemelessSite, in jsval originAttributes); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyBySite)
  NS_IMETHOD CleanRandomKeyBySite(const nsACString& aSchemelessSite, JS::Handle<JS::Value> originAttributes, JSContext* cx) = 0;

  /* void cleanRandomKeyByHost (in ACString aHost, in AString aPattern); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyByHost)
  NS_IMETHOD CleanRandomKeyByHost(const nsACString& aHost, const nsAString& aPattern) = 0;

  /* void cleanRandomKeyByOriginAttributesPattern (in AString aPattern); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyByOriginAttributesPattern)
  NS_IMETHOD CleanRandomKeyByOriginAttributesPattern(const nsAString& aPattern) = 0;

  /* [binaryname(GetSpoofedUserAgentService)] ACString getSpoofedUserAgent (in boolean aDesktopMode); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_getSpoofedUserAgent)
  NS_IMETHOD GetSpoofedUserAgentService(bool aDesktopMode, nsACString& _retval) = 0;

  /* Array<uint8_t> testGenerateRandomKey (in nsIChannel aChannel); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_testGenerateRandomKey)
  NS_IMETHOD TestGenerateRandomKey(nsIChannel *aChannel, nsTArray<uint8_t >& _retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIRFPSERVICE \
  NS_IMETHOD SetFingerprintingOverrides(const nsTArray<RefPtr<nsIFingerprintingOverride>>& aOverrides) override; \
  NS_IMETHOD GetFingerprintingOverrides(const nsACString& aDomainKey, nsIRFPTargetSetIDL **_retval) override; \
  NS_IMETHOD CleanAllOverrides(void) override; \
  NS_IMETHOD GetEnabledFingerprintingProtectionsBaseline(nsIRFPTargetSetIDL **aEnabledFingerprintingProtectionsBaseline) override; \
  NS_IMETHOD GetEnabledFingerprintingProtections(nsIRFPTargetSetIDL **aEnabledFingerprintingProtections) override; \
  NS_IMETHOD CleanAllRandomKeys(void) override; \
  NS_IMETHOD CleanRandomKeyByPrincipal(nsIPrincipal *aPrincipal) override; \
  NS_IMETHOD CleanRandomKeyBySite(const nsACString& aSchemelessSite, JS::Handle<JS::Value> originAttributes, JSContext* cx) override; \
  NS_IMETHOD CleanRandomKeyByHost(const nsACString& aHost, const nsAString& aPattern) override; \
  NS_IMETHOD CleanRandomKeyByOriginAttributesPattern(const nsAString& aPattern) override; \
  NS_IMETHOD GetSpoofedUserAgentService(bool aDesktopMode, nsACString& _retval) override; \
  NS_IMETHOD TestGenerateRandomKey(nsIChannel *aChannel, nsTArray<uint8_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_NSIRFPSERVICE \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_setFingerprintingOverrides)\
  nsresult SetFingerprintingOverrides(const nsTArray<RefPtr<nsIFingerprintingOverride>>& aOverrides); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_getFingerprintingOverrides)\
  nsresult GetFingerprintingOverrides(const nsACString& aDomainKey, nsIRFPTargetSetIDL **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanAllOverrides)\
  nsresult CleanAllOverrides(void); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRFPService_enabledFingerprintingProtectionsBaseline)\
  nsresult GetEnabledFingerprintingProtectionsBaseline(nsIRFPTargetSetIDL **aEnabledFingerprintingProtectionsBaseline); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRFPService_enabledFingerprintingProtections)\
  nsresult GetEnabledFingerprintingProtections(nsIRFPTargetSetIDL **aEnabledFingerprintingProtections); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanAllRandomKeys)\
  nsresult CleanAllRandomKeys(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyByPrincipal)\
  nsresult CleanRandomKeyByPrincipal(nsIPrincipal *aPrincipal); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyBySite)\
  nsresult CleanRandomKeyBySite(const nsACString& aSchemelessSite, JS::Handle<JS::Value> originAttributes, JSContext* cx); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyByHost)\
  nsresult CleanRandomKeyByHost(const nsACString& aHost, const nsAString& aPattern); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_cleanRandomKeyByOriginAttributesPattern)\
  nsresult CleanRandomKeyByOriginAttributesPattern(const nsAString& aPattern); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_getSpoofedUserAgent)\
  nsresult GetSpoofedUserAgentService(bool aDesktopMode, nsACString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRFPService_testGenerateRandomKey)\
  nsresult TestGenerateRandomKey(nsIChannel *aChannel, nsTArray<uint8_t >& _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIRFPSERVICE(_to) \
  NS_IMETHOD SetFingerprintingOverrides(const nsTArray<RefPtr<nsIFingerprintingOverride>>& aOverrides) override { return _to SetFingerprintingOverrides(aOverrides); } \
  NS_IMETHOD GetFingerprintingOverrides(const nsACString& aDomainKey, nsIRFPTargetSetIDL **_retval) override { return _to GetFingerprintingOverrides(aDomainKey, _retval); } \
  NS_IMETHOD CleanAllOverrides(void) override { return _to CleanAllOverrides(); } \
  NS_IMETHOD GetEnabledFingerprintingProtectionsBaseline(nsIRFPTargetSetIDL **aEnabledFingerprintingProtectionsBaseline) override { return _to GetEnabledFingerprintingProtectionsBaseline(aEnabledFingerprintingProtectionsBaseline); } \
  NS_IMETHOD GetEnabledFingerprintingProtections(nsIRFPTargetSetIDL **aEnabledFingerprintingProtections) override { return _to GetEnabledFingerprintingProtections(aEnabledFingerprintingProtections); } \
  NS_IMETHOD CleanAllRandomKeys(void) override { return _to CleanAllRandomKeys(); } \
  NS_IMETHOD CleanRandomKeyByPrincipal(nsIPrincipal *aPrincipal) override { return _to CleanRandomKeyByPrincipal(aPrincipal); } \
  NS_IMETHOD CleanRandomKeyBySite(const nsACString& aSchemelessSite, JS::Handle<JS::Value> originAttributes, JSContext* cx) override { return _to CleanRandomKeyBySite(aSchemelessSite, originAttributes, cx); } \
  NS_IMETHOD CleanRandomKeyByHost(const nsACString& aHost, const nsAString& aPattern) override { return _to CleanRandomKeyByHost(aHost, aPattern); } \
  NS_IMETHOD CleanRandomKeyByOriginAttributesPattern(const nsAString& aPattern) override { return _to CleanRandomKeyByOriginAttributesPattern(aPattern); } \
  NS_IMETHOD GetSpoofedUserAgentService(bool aDesktopMode, nsACString& _retval) override { return _to GetSpoofedUserAgentService(aDesktopMode, _retval); } \
  NS_IMETHOD TestGenerateRandomKey(nsIChannel *aChannel, nsTArray<uint8_t >& _retval) override { return _to TestGenerateRandomKey(aChannel, _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_NSIRFPSERVICE(_to) \
  NS_IMETHOD SetFingerprintingOverrides(const nsTArray<RefPtr<nsIFingerprintingOverride>>& aOverrides) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFingerprintingOverrides(aOverrides); } \
  NS_IMETHOD GetFingerprintingOverrides(const nsACString& aDomainKey, nsIRFPTargetSetIDL **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFingerprintingOverrides(aDomainKey, _retval); } \
  NS_IMETHOD CleanAllOverrides(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CleanAllOverrides(); } \
  NS_IMETHOD GetEnabledFingerprintingProtectionsBaseline(nsIRFPTargetSetIDL **aEnabledFingerprintingProtectionsBaseline) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabledFingerprintingProtectionsBaseline(aEnabledFingerprintingProtectionsBaseline); } \
  NS_IMETHOD GetEnabledFingerprintingProtections(nsIRFPTargetSetIDL **aEnabledFingerprintingProtections) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabledFingerprintingProtections(aEnabledFingerprintingProtections); } \
  NS_IMETHOD CleanAllRandomKeys(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CleanAllRandomKeys(); } \
  NS_IMETHOD CleanRandomKeyByPrincipal(nsIPrincipal *aPrincipal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CleanRandomKeyByPrincipal(aPrincipal); } \
  NS_IMETHOD CleanRandomKeyBySite(const nsACString& aSchemelessSite, JS::Handle<JS::Value> originAttributes, JSContext* cx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CleanRandomKeyBySite(aSchemelessSite, originAttributes, cx); } \
  NS_IMETHOD CleanRandomKeyByHost(const nsACString& aHost, const nsAString& aPattern) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CleanRandomKeyByHost(aHost, aPattern); } \
  NS_IMETHOD CleanRandomKeyByOriginAttributesPattern(const nsAString& aPattern) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CleanRandomKeyByOriginAttributesPattern(aPattern); } \
  NS_IMETHOD GetSpoofedUserAgentService(bool aDesktopMode, nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSpoofedUserAgentService(aDesktopMode, _retval); } \
  NS_IMETHOD TestGenerateRandomKey(nsIChannel *aChannel, nsTArray<uint8_t >& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestGenerateRandomKey(aChannel, _retval); } 


#endif /* __gen_nsIRFPService_h__ */
