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

#ifndef __gen_nsISpeculativeConnect_h__
#define __gen_nsISpeculativeConnect_h__


#include "nsISupports.h"

#include "js/Value.h"

#include "mozilla/AlreadyAddRefed.h"
#include "mozilla/Assertions.h"
#include "mozilla/DebugOnly.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 nsIURI; /* forward declaration */

class nsIInterfaceRequestor; /* forward declaration */

// %{C++:12-16
namespace mozilla {

class OriginAttributes;

}
// %}

/* starting interface:    nsISpeculativeConnect */
#define NS_ISPECULATIVECONNECT_IID_STR "d74a17ac-5b8a-4824-a309-b1f04a3c4aed"

#define NS_ISPECULATIVECONNECT_IID \
  {0xd74a17ac, 0x5b8a, 0x4824, \
    { 0xa3, 0x09, 0xb1, 0xf0, 0x4a, 0x3c, 0x4a, 0xed }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsISpeculativeConnect) nsISpeculativeConnect : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ISPECULATIVECONNECT_IID)

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

  /* void speculativeConnect (in nsIURI aURI, in nsIPrincipal aPrincipal, in nsIInterfaceRequestor aCallbacks, in boolean aAnonymous); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsISpeculativeConnect_speculativeConnect)
  NS_IMETHOD SpeculativeConnect(nsIURI *aURI, nsIPrincipal *aPrincipal, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) = 0;

  /* [implicit_jscontext] void speculativeConnectWithOriginAttributes (in nsIURI aURI, in jsval originAttributes, in nsIInterfaceRequestor aCallbacks, in boolean aAnonymous); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsISpeculativeConnect_speculativeConnectWithOriginAttributes)
  NS_IMETHOD SpeculativeConnectWithOriginAttributes(nsIURI *aURI, JS::Handle<JS::Value> originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous, JSContext* cx) = 0;

  /* [notxpcom] void speculativeConnectWithOriginAttributesNative (in nsIURI aURI, in OriginAttributes originAttributes, in nsIInterfaceRequestor aCallbacks, in boolean aAnonymous); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsISpeculativeConnect_speculativeConnectWithOriginAttributesNative)
  NS_IMETHOD_(void) SpeculativeConnectWithOriginAttributesNative(nsIURI *aURI, mozilla::OriginAttributes&& originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISPECULATIVECONNECT \
  NS_IMETHOD SpeculativeConnect(nsIURI *aURI, nsIPrincipal *aPrincipal, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) override; \
  NS_IMETHOD SpeculativeConnectWithOriginAttributes(nsIURI *aURI, JS::Handle<JS::Value> originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous, JSContext* cx) override; \
  NS_IMETHOD_(void) SpeculativeConnectWithOriginAttributesNative(nsIURI *aURI, mozilla::OriginAttributes&& originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) 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_NSISPECULATIVECONNECT \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsISpeculativeConnect_speculativeConnect)\
  nsresult SpeculativeConnect(nsIURI *aURI, nsIPrincipal *aPrincipal, nsIInterfaceRequestor *aCallbacks, bool aAnonymous); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsISpeculativeConnect_speculativeConnectWithOriginAttributes)\
  nsresult SpeculativeConnectWithOriginAttributes(nsIURI *aURI, JS::Handle<JS::Value> originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous, JSContext* cx); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsISpeculativeConnect_speculativeConnectWithOriginAttributesNative)\
  nsresult_(void) SpeculativeConnectWithOriginAttributesNative(nsIURI *aURI, mozilla::OriginAttributes&& originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISPECULATIVECONNECT(_to) \
  NS_IMETHOD SpeculativeConnect(nsIURI *aURI, nsIPrincipal *aPrincipal, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) override { return _to SpeculativeConnect(aURI, aPrincipal, aCallbacks, aAnonymous); } \
  NS_IMETHOD SpeculativeConnectWithOriginAttributes(nsIURI *aURI, JS::Handle<JS::Value> originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous, JSContext* cx) override { return _to SpeculativeConnectWithOriginAttributes(aURI, originAttributes, aCallbacks, aAnonymous, cx); } \
  NS_IMETHOD_(void) SpeculativeConnectWithOriginAttributesNative(nsIURI *aURI, mozilla::OriginAttributes&& originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) override { return _to SpeculativeConnectWithOriginAttributesNative(aURI, originAttributes, aCallbacks, aAnonymous); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISPECULATIVECONNECT(_to) \
  NS_IMETHOD SpeculativeConnect(nsIURI *aURI, nsIPrincipal *aPrincipal, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SpeculativeConnect(aURI, aPrincipal, aCallbacks, aAnonymous); } \
  NS_IMETHOD SpeculativeConnectWithOriginAttributes(nsIURI *aURI, JS::Handle<JS::Value> originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous, JSContext* cx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SpeculativeConnectWithOriginAttributes(aURI, originAttributes, aCallbacks, aAnonymous, cx); } \
  NS_IMETHOD_(void) SpeculativeConnectWithOriginAttributesNative(nsIURI *aURI, mozilla::OriginAttributes&& originAttributes, nsIInterfaceRequestor *aCallbacks, bool aAnonymous) override; 


/* starting interface:    nsISpeculativeConnectionOverrider */
#define NS_ISPECULATIVECONNECTIONOVERRIDER_IID_STR "1040ebe3-6ed1-45a6-8587-995e082518d7"

#define NS_ISPECULATIVECONNECTIONOVERRIDER_IID \
  {0x1040ebe3, 0x6ed1, 0x45a6, \
    { 0x85, 0x87, 0x99, 0x5e, 0x08, 0x25, 0x18, 0xd7 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsISpeculativeConnectionOverrider) nsISpeculativeConnectionOverrider : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ISPECULATIVECONNECTIONOVERRIDER_IID)

  /* [infallible] readonly attribute unsigned long parallelSpeculativeConnectLimit; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsISpeculativeConnectionOverrider_parallelSpeculativeConnectLimit)
  NS_IMETHOD GetParallelSpeculativeConnectLimit(uint32_t *aParallelSpeculativeConnectLimit) = 0;
  inline uint32_t  GetParallelSpeculativeConnectLimit()
  {
    uint32_t result;
    mozilla::DebugOnly<nsresult> rv = GetParallelSpeculativeConnectLimit(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* [infallible] readonly attribute boolean ignoreIdle; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsISpeculativeConnectionOverrider_ignoreIdle)
  NS_IMETHOD GetIgnoreIdle(bool *aIgnoreIdle) = 0;
  inline bool  GetIgnoreIdle()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetIgnoreIdle(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* [infallible] readonly attribute boolean allow1918; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsISpeculativeConnectionOverrider_allow1918)
  NS_IMETHOD GetAllow1918(bool *aAllow1918) = 0;
  inline bool  GetAllow1918()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetAllow1918(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISPECULATIVECONNECTIONOVERRIDER \
  using nsISpeculativeConnectionOverrider::GetParallelSpeculativeConnectLimit; \
  NS_IMETHOD GetParallelSpeculativeConnectLimit(uint32_t *aParallelSpeculativeConnectLimit) override; \
  using nsISpeculativeConnectionOverrider::GetIgnoreIdle; \
  NS_IMETHOD GetIgnoreIdle(bool *aIgnoreIdle) override; \
  using nsISpeculativeConnectionOverrider::GetAllow1918; \
  NS_IMETHOD GetAllow1918(bool *aAllow1918) 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_NSISPECULATIVECONNECTIONOVERRIDER \
  using nsISpeculativeConnectionOverrider::GetParallelSpeculativeConnectLimit; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsISpeculativeConnectionOverrider_parallelSpeculativeConnectLimit)\
  nsresult GetParallelSpeculativeConnectLimit(uint32_t *aParallelSpeculativeConnectLimit); \
  using nsISpeculativeConnectionOverrider::GetIgnoreIdle; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsISpeculativeConnectionOverrider_ignoreIdle)\
  nsresult GetIgnoreIdle(bool *aIgnoreIdle); \
  using nsISpeculativeConnectionOverrider::GetAllow1918; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsISpeculativeConnectionOverrider_allow1918)\
  nsresult GetAllow1918(bool *aAllow1918); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISPECULATIVECONNECTIONOVERRIDER(_to) \
  using nsISpeculativeConnectionOverrider::GetParallelSpeculativeConnectLimit; \
  NS_IMETHOD GetParallelSpeculativeConnectLimit(uint32_t *aParallelSpeculativeConnectLimit) override { return _to GetParallelSpeculativeConnectLimit(aParallelSpeculativeConnectLimit); } \
  using nsISpeculativeConnectionOverrider::GetIgnoreIdle; \
  NS_IMETHOD GetIgnoreIdle(bool *aIgnoreIdle) override { return _to GetIgnoreIdle(aIgnoreIdle); } \
  using nsISpeculativeConnectionOverrider::GetAllow1918; \
  NS_IMETHOD GetAllow1918(bool *aAllow1918) override { return _to GetAllow1918(aAllow1918); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISPECULATIVECONNECTIONOVERRIDER(_to) \
  NS_IMETHOD GetParallelSpeculativeConnectLimit(uint32_t *aParallelSpeculativeConnectLimit) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParallelSpeculativeConnectLimit(aParallelSpeculativeConnectLimit); } \
  NS_IMETHOD GetIgnoreIdle(bool *aIgnoreIdle) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIgnoreIdle(aIgnoreIdle); } \
  NS_IMETHOD GetAllow1918(bool *aAllow1918) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllow1918(aAllow1918); } 


#endif /* __gen_nsISpeculativeConnect_h__ */
