/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/netwerk/cookie/nsICookieService.idl
 */

#ifndef __gen_nsICookieService_h__
#define __gen_nsICookieService_h__


#include "nsISupports.h"

#include "nsTArray.h"

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

class nsICookie; /* forward declaration */

class nsIURI; /* forward declaration */

namespace mozilla {
namespace dom {
class Document; /* webidl Document */
} // namespace dom
} // namespace mozilla

// %{C++:13-20
namespace mozilla {
  class OriginAttributes;

  namespace net {
    class Cookie;
    class CookieParser;
  }
}
// %}

/* starting interface:    nsICookieService */
#define NS_ICOOKIESERVICE_IID_STR "1e94e283-2811-4f43-b947-d22b1549d824"

#define NS_ICOOKIESERVICE_IID \
  {0x1e94e283, 0x2811, 0x4f43, \
    { 0xb9, 0x47, 0xd2, 0x2b, 0x15, 0x49, 0xd8, 0x24 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsICookieService) nsICookieService : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ICOOKIESERVICE_IID)

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

  enum {
    BEHAVIOR_ACCEPT MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_ACCEPT) = 0U,
    BEHAVIOR_REJECT_FOREIGN MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_REJECT_FOREIGN) = 1U,
    BEHAVIOR_REJECT MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_REJECT) = 2U,
    BEHAVIOR_LIMIT_FOREIGN MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_LIMIT_FOREIGN) = 3U,
    BEHAVIOR_REJECT_TRACKER MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_REJECT_TRACKER) = 4U,
    BEHAVIOR_PARTITION_FOREIGN MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_PARTITION_FOREIGN) = 5U,
    BEHAVIOR_LAST MOZ_BINDING(binding_to, idl, const, XPIDL_nsICookieService_BEHAVIOR_LAST) = 5U
  };

  /* [noscript,nostdcall,notxpcom] void getCookiesFromHost (in ACString aBaseDomain, in const_OriginAttributes aOriginAttributes, out Array<CookieRefPtr> aCookies); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_getCookiesFromHost)
  virtual void GetCookiesFromHost(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies) = 0;

  /* [noscript,nostdcall,notxpcom] void staleCookies (in Array<CookieRefPtr> aCookies, in int64_t aCurrentTimeInUsec); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_staleCookies)
  virtual void StaleCookies(const nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies, int64_t aCurrentTimeInUsec) = 0;

  /* [noscript,nostdcall,notxpcom] boolean hasExistingCookies (in ACString aBaseDomain, in const_OriginAttributes aOriginAttributes); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_hasExistingCookies)
  virtual bool HasExistingCookies(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes) = 0;

  /* [noscript,nostdcall,notxpcom] void addCookieFromDocument (in CookieParserPtr aCookieParser, in ACString aBaseDomain, in const_OriginAttributes aOriginAttributes, in CookiePtr aCookie, in int64_t aCurrentTimeInUsec, in nsIURI aDocumentURI, in boolean aThirdParty, in Document document); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_addCookieFromDocument)
  virtual void AddCookieFromDocument(mozilla::net::CookieParser & aCookieParser, const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, mozilla::net::Cookie & aCookie, int64_t aCurrentTimeInUsec, nsIURI *aDocumentURI, bool aThirdParty, mozilla::dom::Document *document) = 0;

  /* ACString getCookieStringFromHttp (in nsIURI aURI, in nsIChannel aChannel); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_getCookieStringFromHttp)
  NS_IMETHOD GetCookieStringFromHttp(nsIURI *aURI, nsIChannel *aChannel, nsACString& _retval) = 0;

  /* void setCookieStringFromHttp (in nsIURI aURI, in ACString aCookie, in nsIChannel aChannel); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_setCookieStringFromHttp)
  NS_IMETHOD SetCookieStringFromHttp(nsIURI *aURI, const nsACString& aCookie, nsIChannel *aChannel) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICOOKIESERVICE \
  virtual void GetCookiesFromHost(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies) override; \
  virtual void StaleCookies(const nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies, int64_t aCurrentTimeInUsec) override; \
  virtual bool HasExistingCookies(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes) override; \
  virtual void AddCookieFromDocument(mozilla::net::CookieParser & aCookieParser, const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, mozilla::net::Cookie & aCookie, int64_t aCurrentTimeInUsec, nsIURI *aDocumentURI, bool aThirdParty, mozilla::dom::Document *document) override; \
  NS_IMETHOD GetCookieStringFromHttp(nsIURI *aURI, nsIChannel *aChannel, nsACString& _retval) override; \
  NS_IMETHOD SetCookieStringFromHttp(nsIURI *aURI, const nsACString& aCookie, nsIChannel *aChannel) 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_NSICOOKIESERVICE \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_getCookiesFromHost)\
  void GetCookiesFromHost(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_staleCookies)\
  void StaleCookies(const nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies, int64_t aCurrentTimeInUsec); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_hasExistingCookies)\
  bool HasExistingCookies(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_addCookieFromDocument)\
  void AddCookieFromDocument(mozilla::net::CookieParser & aCookieParser, const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, mozilla::net::Cookie & aCookie, int64_t aCurrentTimeInUsec, nsIURI *aDocumentURI, bool aThirdParty, mozilla::dom::Document *document); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_getCookieStringFromHttp)\
  nsresult GetCookieStringFromHttp(nsIURI *aURI, nsIChannel *aChannel, nsACString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICookieService_setCookieStringFromHttp)\
  nsresult SetCookieStringFromHttp(nsIURI *aURI, const nsACString& aCookie, nsIChannel *aChannel); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICOOKIESERVICE(_to) \
  virtual void GetCookiesFromHost(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies) override { return _to GetCookiesFromHost(aBaseDomain, aOriginAttributes, aCookies); } \
  virtual void StaleCookies(const nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies, int64_t aCurrentTimeInUsec) override { return _to StaleCookies(aCookies, aCurrentTimeInUsec); } \
  virtual bool HasExistingCookies(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes) override { return _to HasExistingCookies(aBaseDomain, aOriginAttributes); } \
  virtual void AddCookieFromDocument(mozilla::net::CookieParser & aCookieParser, const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, mozilla::net::Cookie & aCookie, int64_t aCurrentTimeInUsec, nsIURI *aDocumentURI, bool aThirdParty, mozilla::dom::Document *document) override { return _to AddCookieFromDocument(aCookieParser, aBaseDomain, aOriginAttributes, aCookie, aCurrentTimeInUsec, aDocumentURI, aThirdParty, document); } \
  NS_IMETHOD GetCookieStringFromHttp(nsIURI *aURI, nsIChannel *aChannel, nsACString& _retval) override { return _to GetCookieStringFromHttp(aURI, aChannel, _retval); } \
  NS_IMETHOD SetCookieStringFromHttp(nsIURI *aURI, const nsACString& aCookie, nsIChannel *aChannel) override { return _to SetCookieStringFromHttp(aURI, aCookie, aChannel); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICOOKIESERVICE(_to) \
  virtual void GetCookiesFromHost(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies) override; \
  virtual void StaleCookies(const nsTArray<RefPtr<mozilla::net::Cookie> >& aCookies, int64_t aCurrentTimeInUsec) override; \
  virtual bool HasExistingCookies(const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes) override; \
  virtual void AddCookieFromDocument(mozilla::net::CookieParser & aCookieParser, const nsACString& aBaseDomain, const mozilla::OriginAttributes & aOriginAttributes, mozilla::net::Cookie & aCookie, int64_t aCurrentTimeInUsec, nsIURI *aDocumentURI, bool aThirdParty, mozilla::dom::Document *document) override; \
  NS_IMETHOD GetCookieStringFromHttp(nsIURI *aURI, nsIChannel *aChannel, nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCookieStringFromHttp(aURI, aChannel, _retval); } \
  NS_IMETHOD SetCookieStringFromHttp(nsIURI *aURI, const nsACString& aCookie, nsIChannel *aChannel) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCookieStringFromHttp(aURI, aCookie, aChannel); } 


#endif /* __gen_nsICookieService_h__ */
