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

#ifndef __gen_nsIChannel_h__
#define __gen_nsIChannel_h__


#include "nsIRequest.h"

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

class nsIInterfaceRequestor; /* forward declaration */

class nsIStreamListener; /* forward declaration */

class nsITransportSecurityInfo; /* forward declaration */

class nsIURI; /* forward declaration */

// %{C++:15-19
#include "nsCOMPtr.h"

namespace mozilla::dom {
class ParentProcessChannelHandle;
}
// %}

/* starting interface:    nsIChannel */
#define NS_ICHANNEL_IID_STR "2c389865-23db-4aa7-9fe5-60cc7b00697e"

#define NS_ICHANNEL_IID \
  {0x2c389865, 0x23db, 0x4aa7, \
    { 0x9f, 0xe5, 0x60, 0xcc, 0x7b, 0x00, 0x69, 0x7e }}

class MOZ_BINDING(binding_to, idl, class, XPIDL_nsIChannel) nsIChannel : public nsIRequest {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ICHANNEL_IID)

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

  /* attribute nsIURI originalURI; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_originalURI)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetOriginalURI(nsIURI **aOriginalURI) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_originalURI)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetOriginalURI(nsIURI *aOriginalURI) = 0;

  /* readonly attribute nsIURI URI; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_URI)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetURI(nsIURI **aURI) = 0;

  /* attribute nsISupports owner; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_owner)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetOwner(nsISupports **aOwner) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_owner)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetOwner(nsISupports *aOwner) = 0;

  /* attribute nsIInterfaceRequestor notificationCallbacks; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_notificationCallbacks)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_notificationCallbacks)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks) = 0;

  /* readonly attribute nsITransportSecurityInfo securityInfo; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_securityInfo)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) = 0;

  /* attribute ACString contentType; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentType)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContentType(nsACString& aContentType) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentType)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetContentType(const nsACString& aContentType) = 0;

  /* attribute ACString contentCharset; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentCharset)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContentCharset(nsACString& aContentCharset) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentCharset)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetContentCharset(const nsACString& aContentCharset) = 0;

  /* attribute int64_t contentLength; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentLength)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContentLength(int64_t *aContentLength) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentLength)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetContentLength(int64_t aContentLength) = 0;

  /* nsIInputStream open (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIChannel_open)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Open(nsIInputStream **_retval) = 0;

  /* void asyncOpen (in nsIStreamListener aListener); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIChannel_asyncOpen)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD AsyncOpen(nsIStreamListener *aListener) = 0;

  /* [must_use] readonly attribute boolean canceled; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_canceled)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD GetCanceled(bool *aCanceled) = 0;

  enum {
    LOAD_DOCUMENT_URI MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_DOCUMENT_URI) = 65536U,
    LOAD_RETARGETED_DOCUMENT_URI MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_RETARGETED_DOCUMENT_URI) = 131072U,
    LOAD_REPLACE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_REPLACE) = 262144U,
    LOAD_INITIAL_DOCUMENT_URI MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_INITIAL_DOCUMENT_URI) = 524288U,
    LOAD_TARGETED MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_TARGETED) = 1048576U,
    LOAD_CALL_CONTENT_SNIFFERS MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_CALL_CONTENT_SNIFFERS) = 2097152U,
    LOAD_BYPASS_URL_CLASSIFIER MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_BYPASS_URL_CLASSIFIER) = 4194304U,
    LOAD_MEDIA_SNIFFER_OVERRIDES_CONTENT_TYPE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_MEDIA_SNIFFER_OVERRIDES_CONTENT_TYPE) = 8388608U,
    LOAD_EXPLICIT_CREDENTIALS MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_EXPLICIT_CREDENTIALS) = 16777216U,
    LOAD_BYPASS_SERVICE_WORKER MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_LOAD_BYPASS_SERVICE_WORKER) = 33554432U
  };

  /* attribute unsigned long contentDisposition; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentDisposition)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContentDisposition(uint32_t *aContentDisposition) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentDisposition)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetContentDisposition(uint32_t aContentDisposition) = 0;

  enum {
    DISPOSITION_INLINE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_DISPOSITION_INLINE) = 0U,
    DISPOSITION_ATTACHMENT MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_DISPOSITION_ATTACHMENT) = 1U,
    DISPOSITION_FORCE_INLINE MOZ_BINDING(binding_to, idl, const, XPIDL_nsIChannel_DISPOSITION_FORCE_INLINE) = 2U
  };

  /* attribute AString contentDispositionFilename; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentDispositionFilename)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContentDispositionFilename(nsAString& aContentDispositionFilename) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentDispositionFilename)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetContentDispositionFilename(const nsAString& aContentDispositionFilename) = 0;

  /* readonly attribute ACString contentDispositionHeader; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentDispositionHeader)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetContentDispositionHeader(nsACString& aContentDispositionHeader) = 0;

  /* attribute nsILoadInfo loadInfo; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_loadInfo)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetLoadInfo(nsILoadInfo **aLoadInfo) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_loadInfo)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetLoadInfo(nsILoadInfo *aLoadInfo) = 0;

  /* readonly attribute boolean isDocument; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_isDocument)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetIsDocument(bool *aIsDocument) = 0;

// %{C++:370-385
  inline bool IsDocument()
  {
    bool isDocument = false;
    if (NS_SUCCEEDED(GetIsDocument(&isDocument)) && isDocument) {
      return true;
    }
    return false;
  }

  inline already_AddRefed<nsILoadInfo> LoadInfo()
  {
    nsCOMPtr<nsILoadInfo> result;
    mozilla::DebugOnly<nsresult> rv = GetLoadInfo(getter_AddRefs(result));
    MOZ_ASSERT(NS_SUCCEEDED(rv) && result);
    return result.forget();
  }
// %}
  /* [noscript] attribute ParentProcessChannelHandle parentProcessChannelHandle; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_parentProcessChannelHandle)
  NS_IMETHOD GetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * * aParentProcessChannelHandle) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_parentProcessChannelHandle)
  NS_IMETHOD SetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * aParentProcessChannelHandle) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICHANNEL \
  NS_IMETHOD GetOriginalURI(nsIURI **aOriginalURI) override; \
  NS_IMETHOD SetOriginalURI(nsIURI *aOriginalURI) override; \
  NS_IMETHOD GetURI(nsIURI **aURI) override; \
  NS_IMETHOD GetOwner(nsISupports **aOwner) override; \
  NS_IMETHOD SetOwner(nsISupports *aOwner) override; \
  NS_IMETHOD GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks) override; \
  NS_IMETHOD SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks) override; \
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) override; \
  NS_IMETHOD GetContentType(nsACString& aContentType) override; \
  NS_IMETHOD SetContentType(const nsACString& aContentType) override; \
  NS_IMETHOD GetContentCharset(nsACString& aContentCharset) override; \
  NS_IMETHOD SetContentCharset(const nsACString& aContentCharset) override; \
  NS_IMETHOD GetContentLength(int64_t *aContentLength) override; \
  NS_IMETHOD SetContentLength(int64_t aContentLength) override; \
  NS_IMETHOD Open(nsIInputStream **_retval) override; \
  NS_IMETHOD AsyncOpen(nsIStreamListener *aListener) override; \
  [[nodiscard]] NS_IMETHOD GetCanceled(bool *aCanceled) override; \
  NS_IMETHOD GetContentDisposition(uint32_t *aContentDisposition) override; \
  NS_IMETHOD SetContentDisposition(uint32_t aContentDisposition) override; \
  NS_IMETHOD GetContentDispositionFilename(nsAString& aContentDispositionFilename) override; \
  NS_IMETHOD SetContentDispositionFilename(const nsAString& aContentDispositionFilename) override; \
  NS_IMETHOD GetContentDispositionHeader(nsACString& aContentDispositionHeader) override; \
  NS_IMETHOD GetLoadInfo(nsILoadInfo **aLoadInfo) override; \
  NS_IMETHOD SetLoadInfo(nsILoadInfo *aLoadInfo) override; \
  NS_IMETHOD GetIsDocument(bool *aIsDocument) override; \
  NS_IMETHOD GetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * * aParentProcessChannelHandle) override; \
  NS_IMETHOD SetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * aParentProcessChannelHandle) 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_NSICHANNEL \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_originalURI)\
  nsresult GetOriginalURI(nsIURI **aOriginalURI); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_originalURI)\
  nsresult SetOriginalURI(nsIURI *aOriginalURI); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_URI)\
  nsresult GetURI(nsIURI **aURI); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_owner)\
  nsresult GetOwner(nsISupports **aOwner); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_owner)\
  nsresult SetOwner(nsISupports *aOwner); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_notificationCallbacks)\
  nsresult GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_notificationCallbacks)\
  nsresult SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_securityInfo)\
  nsresult GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentType)\
  nsresult GetContentType(nsACString& aContentType); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentType)\
  nsresult SetContentType(const nsACString& aContentType); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentCharset)\
  nsresult GetContentCharset(nsACString& aContentCharset); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentCharset)\
  nsresult SetContentCharset(const nsACString& aContentCharset); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentLength)\
  nsresult GetContentLength(int64_t *aContentLength); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentLength)\
  nsresult SetContentLength(int64_t aContentLength); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIChannel_open)\
  nsresult Open(nsIInputStream **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIChannel_asyncOpen)\
  nsresult AsyncOpen(nsIStreamListener *aListener); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_canceled)\
  [[nodiscard]] nsresult GetCanceled(bool *aCanceled); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentDisposition)\
  nsresult GetContentDisposition(uint32_t *aContentDisposition); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentDisposition)\
  nsresult SetContentDisposition(uint32_t aContentDisposition); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentDispositionFilename)\
  nsresult GetContentDispositionFilename(nsAString& aContentDispositionFilename); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_contentDispositionFilename)\
  nsresult SetContentDispositionFilename(const nsAString& aContentDispositionFilename); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_contentDispositionHeader)\
  nsresult GetContentDispositionHeader(nsACString& aContentDispositionHeader); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_loadInfo)\
  nsresult GetLoadInfo(nsILoadInfo **aLoadInfo); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_loadInfo)\
  nsresult SetLoadInfo(nsILoadInfo *aLoadInfo); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_isDocument)\
  nsresult GetIsDocument(bool *aIsDocument); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIChannel_parentProcessChannelHandle)\
  nsresult GetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * * aParentProcessChannelHandle); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIChannel_parentProcessChannelHandle)\
  nsresult SetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * aParentProcessChannelHandle); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICHANNEL(_to) \
  NS_IMETHOD GetOriginalURI(nsIURI **aOriginalURI) override { return _to GetOriginalURI(aOriginalURI); } \
  NS_IMETHOD SetOriginalURI(nsIURI *aOriginalURI) override { return _to SetOriginalURI(aOriginalURI); } \
  NS_IMETHOD GetURI(nsIURI **aURI) override { return _to GetURI(aURI); } \
  NS_IMETHOD GetOwner(nsISupports **aOwner) override { return _to GetOwner(aOwner); } \
  NS_IMETHOD SetOwner(nsISupports *aOwner) override { return _to SetOwner(aOwner); } \
  NS_IMETHOD GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks) override { return _to GetNotificationCallbacks(aNotificationCallbacks); } \
  NS_IMETHOD SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks) override { return _to SetNotificationCallbacks(aNotificationCallbacks); } \
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) override { return _to GetSecurityInfo(aSecurityInfo); } \
  NS_IMETHOD GetContentType(nsACString& aContentType) override { return _to GetContentType(aContentType); } \
  NS_IMETHOD SetContentType(const nsACString& aContentType) override { return _to SetContentType(aContentType); } \
  NS_IMETHOD GetContentCharset(nsACString& aContentCharset) override { return _to GetContentCharset(aContentCharset); } \
  NS_IMETHOD SetContentCharset(const nsACString& aContentCharset) override { return _to SetContentCharset(aContentCharset); } \
  NS_IMETHOD GetContentLength(int64_t *aContentLength) override { return _to GetContentLength(aContentLength); } \
  NS_IMETHOD SetContentLength(int64_t aContentLength) override { return _to SetContentLength(aContentLength); } \
  NS_IMETHOD Open(nsIInputStream **_retval) override { return _to Open(_retval); } \
  NS_IMETHOD AsyncOpen(nsIStreamListener *aListener) override { return _to AsyncOpen(aListener); } \
  [[nodiscard]] NS_IMETHOD GetCanceled(bool *aCanceled) override { return _to GetCanceled(aCanceled); } \
  NS_IMETHOD GetContentDisposition(uint32_t *aContentDisposition) override { return _to GetContentDisposition(aContentDisposition); } \
  NS_IMETHOD SetContentDisposition(uint32_t aContentDisposition) override { return _to SetContentDisposition(aContentDisposition); } \
  NS_IMETHOD GetContentDispositionFilename(nsAString& aContentDispositionFilename) override { return _to GetContentDispositionFilename(aContentDispositionFilename); } \
  NS_IMETHOD SetContentDispositionFilename(const nsAString& aContentDispositionFilename) override { return _to SetContentDispositionFilename(aContentDispositionFilename); } \
  NS_IMETHOD GetContentDispositionHeader(nsACString& aContentDispositionHeader) override { return _to GetContentDispositionHeader(aContentDispositionHeader); } \
  NS_IMETHOD GetLoadInfo(nsILoadInfo **aLoadInfo) override { return _to GetLoadInfo(aLoadInfo); } \
  NS_IMETHOD SetLoadInfo(nsILoadInfo *aLoadInfo) override { return _to SetLoadInfo(aLoadInfo); } \
  NS_IMETHOD GetIsDocument(bool *aIsDocument) override { return _to GetIsDocument(aIsDocument); } \
  NS_IMETHOD GetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * * aParentProcessChannelHandle) override { return _to GetParentProcessChannelHandle(aParentProcessChannelHandle); } \
  NS_IMETHOD SetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * aParentProcessChannelHandle) override { return _to SetParentProcessChannelHandle(aParentProcessChannelHandle); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICHANNEL(_to) \
  NS_IMETHOD GetOriginalURI(nsIURI **aOriginalURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOriginalURI(aOriginalURI); } \
  NS_IMETHOD SetOriginalURI(nsIURI *aOriginalURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOriginalURI(aOriginalURI); } \
  NS_IMETHOD GetURI(nsIURI **aURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURI(aURI); } \
  NS_IMETHOD GetOwner(nsISupports **aOwner) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOwner(aOwner); } \
  NS_IMETHOD SetOwner(nsISupports *aOwner) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOwner(aOwner); } \
  NS_IMETHOD GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNotificationCallbacks(aNotificationCallbacks); } \
  NS_IMETHOD SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNotificationCallbacks(aNotificationCallbacks); } \
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSecurityInfo(aSecurityInfo); } \
  NS_IMETHOD GetContentType(nsACString& aContentType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentType(aContentType); } \
  NS_IMETHOD SetContentType(const nsACString& aContentType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentType(aContentType); } \
  NS_IMETHOD GetContentCharset(nsACString& aContentCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentCharset(aContentCharset); } \
  NS_IMETHOD SetContentCharset(const nsACString& aContentCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentCharset(aContentCharset); } \
  NS_IMETHOD GetContentLength(int64_t *aContentLength) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentLength(aContentLength); } \
  NS_IMETHOD SetContentLength(int64_t aContentLength) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentLength(aContentLength); } \
  NS_IMETHOD Open(nsIInputStream **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Open(_retval); } \
  NS_IMETHOD AsyncOpen(nsIStreamListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncOpen(aListener); } \
  [[nodiscard]] NS_IMETHOD GetCanceled(bool *aCanceled) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanceled(aCanceled); } \
  NS_IMETHOD GetContentDisposition(uint32_t *aContentDisposition) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentDisposition(aContentDisposition); } \
  NS_IMETHOD SetContentDisposition(uint32_t aContentDisposition) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentDisposition(aContentDisposition); } \
  NS_IMETHOD GetContentDispositionFilename(nsAString& aContentDispositionFilename) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentDispositionFilename(aContentDispositionFilename); } \
  NS_IMETHOD SetContentDispositionFilename(const nsAString& aContentDispositionFilename) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentDispositionFilename(aContentDispositionFilename); } \
  NS_IMETHOD GetContentDispositionHeader(nsACString& aContentDispositionHeader) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentDispositionHeader(aContentDispositionHeader); } \
  NS_IMETHOD GetLoadInfo(nsILoadInfo **aLoadInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLoadInfo(aLoadInfo); } \
  NS_IMETHOD SetLoadInfo(nsILoadInfo *aLoadInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLoadInfo(aLoadInfo); } \
  NS_IMETHOD GetIsDocument(bool *aIsDocument) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsDocument(aIsDocument); } \
  NS_IMETHOD GetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * * aParentProcessChannelHandle) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParentProcessChannelHandle(aParentProcessChannelHandle); } \
  NS_IMETHOD SetParentProcessChannelHandle(mozilla::dom::ParentProcessChannelHandle * aParentProcessChannelHandle) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParentProcessChannelHandle(aParentProcessChannelHandle); } 


/* starting interface:    nsIIdentChannel */
#define NS_IIDENTCHANNEL_IID_STR "1ebbff64-d742-4f4a-aad5-4df2d1eb937a"

#define NS_IIDENTCHANNEL_IID \
  {0x1ebbff64, 0xd742, 0x4f4a, \
    { 0xaa, 0xd5, 0x4d, 0xf2, 0xd1, 0xeb, 0x93, 0x7a }}

class MOZ_BINDING(binding_to, idl, class, XPIDL_nsIIdentChannel) nsIIdentChannel : public nsIChannel {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IIDENTCHANNEL_IID)

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

  /* [must_use] attribute uint64_t channelId; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIIdentChannel_channelId)
  [[nodiscard]] NS_IMETHOD GetChannelId(uint64_t *aChannelId) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIIdentChannel_channelId)
  [[nodiscard]] NS_IMETHOD SetChannelId(uint64_t aChannelId) = 0;

// %{C++:410-417
  inline uint64_t ChannelId()
  {
    uint64_t value = 0;
    if (NS_SUCCEEDED(GetChannelId(&value))) {
      return value;
    }
    return 0;
  }
// %}
};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIDENTCHANNEL \
  [[nodiscard]] NS_IMETHOD GetChannelId(uint64_t *aChannelId) override; \
  [[nodiscard]] NS_IMETHOD SetChannelId(uint64_t aChannelId) 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_NSIIDENTCHANNEL \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIIdentChannel_channelId)\
  [[nodiscard]] nsresult GetChannelId(uint64_t *aChannelId); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIIdentChannel_channelId)\
  [[nodiscard]] nsresult SetChannelId(uint64_t aChannelId); \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIDENTCHANNEL(_to) \
  [[nodiscard]] NS_IMETHOD GetChannelId(uint64_t *aChannelId) override { return _to GetChannelId(aChannelId); } \
  [[nodiscard]] NS_IMETHOD SetChannelId(uint64_t aChannelId) override { return _to SetChannelId(aChannelId); } \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIIDENTCHANNEL(_to) \
  [[nodiscard]] NS_IMETHOD GetChannelId(uint64_t *aChannelId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChannelId(aChannelId); } \
  [[nodiscard]] NS_IMETHOD SetChannelId(uint64_t aChannelId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetChannelId(aChannelId); } \


#endif /* __gen_nsIChannel_h__ */
