/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/toolkit/mozapps/extensions/amIAddonManagerStartup.idl
 */

#ifndef __gen_amIAddonManagerStartup_h__
#define __gen_amIAddonManagerStartup_h__


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

class nsIJSRAIIHelper; /* forward declaration */

class nsIURI; /* forward declaration */


/* starting interface:    amIAddonManagerStartup */
#define AMIADDONMANAGERSTARTUP_IID_STR "01dfa47b-87e4-4135-877b-586d033e1b5d"

#define AMIADDONMANAGERSTARTUP_IID \
  {0x01dfa47b, 0x87e4, 0x4135, \
    { 0x87, 0x7b, 0x58, 0x6d, 0x03, 0x3e, 0x1b, 0x5d }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_amIAddonManagerStartup) amIAddonManagerStartup : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(AMIADDONMANAGERSTARTUP_IID)

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

  /* [implicit_jscontext] jsval readStartupData (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_readStartupData)
  NS_IMETHOD ReadStartupData(JSContext* cx, JS::MutableHandle<JS::Value> _retval) = 0;

  /* [implicit_jscontext] nsIJSRAIIHelper registerChrome (in nsIURI manifestURI, in jsval entries); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_registerChrome)
  NS_IMETHOD RegisterChrome(nsIURI *manifestURI, JS::Handle<JS::Value> entries, JSContext* cx, nsIJSRAIIHelper **_retval) = 0;

  /* [implicit_jscontext] jsval encodeBlob (in jsval value); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_encodeBlob)
  NS_IMETHOD EncodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) = 0;

  /* [implicit_jscontext] jsval decodeBlob (in jsval value); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_decodeBlob)
  NS_IMETHOD DecodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) = 0;

  /* Array<AString> enumerateJAR (in nsIURI uri, in AUTF8String pattern); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_enumerateJAR)
  NS_IMETHOD EnumerateJAR(nsIURI *uri, const nsACString& pattern, nsTArray<nsString >& _retval) = 0;

  /* Array<AString> enumerateJARSubtree (in nsIURI uri); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_enumerateJARSubtree)
  NS_IMETHOD EnumerateJARSubtree(nsIURI *uri, nsTArray<nsString >& _retval) = 0;

  /* void initializeURLPreloader (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_initializeURLPreloader)
  NS_IMETHOD InitializeURLPreloader(void) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_AMIADDONMANAGERSTARTUP \
  NS_IMETHOD ReadStartupData(JSContext* cx, JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD RegisterChrome(nsIURI *manifestURI, JS::Handle<JS::Value> entries, JSContext* cx, nsIJSRAIIHelper **_retval) override; \
  NS_IMETHOD EncodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD DecodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD EnumerateJAR(nsIURI *uri, const nsACString& pattern, nsTArray<nsString >& _retval) override; \
  NS_IMETHOD EnumerateJARSubtree(nsIURI *uri, nsTArray<nsString >& _retval) override; \
  NS_IMETHOD InitializeURLPreloader(void) 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_AMIADDONMANAGERSTARTUP \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_readStartupData)\
  nsresult ReadStartupData(JSContext* cx, JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_registerChrome)\
  nsresult RegisterChrome(nsIURI *manifestURI, JS::Handle<JS::Value> entries, JSContext* cx, nsIJSRAIIHelper **_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_encodeBlob)\
  nsresult EncodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_decodeBlob)\
  nsresult DecodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_enumerateJAR)\
  nsresult EnumerateJAR(nsIURI *uri, const nsACString& pattern, nsTArray<nsString >& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_enumerateJARSubtree)\
  nsresult EnumerateJARSubtree(nsIURI *uri, nsTArray<nsString >& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_amIAddonManagerStartup_initializeURLPreloader)\
  nsresult InitializeURLPreloader(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_AMIADDONMANAGERSTARTUP(_to) \
  NS_IMETHOD ReadStartupData(JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return _to ReadStartupData(cx, _retval); } \
  NS_IMETHOD RegisterChrome(nsIURI *manifestURI, JS::Handle<JS::Value> entries, JSContext* cx, nsIJSRAIIHelper **_retval) override { return _to RegisterChrome(manifestURI, entries, cx, _retval); } \
  NS_IMETHOD EncodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return _to EncodeBlob(value, cx, _retval); } \
  NS_IMETHOD DecodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return _to DecodeBlob(value, cx, _retval); } \
  NS_IMETHOD EnumerateJAR(nsIURI *uri, const nsACString& pattern, nsTArray<nsString >& _retval) override { return _to EnumerateJAR(uri, pattern, _retval); } \
  NS_IMETHOD EnumerateJARSubtree(nsIURI *uri, nsTArray<nsString >& _retval) override { return _to EnumerateJARSubtree(uri, _retval); } \
  NS_IMETHOD InitializeURLPreloader(void) override { return _to InitializeURLPreloader(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_AMIADDONMANAGERSTARTUP(_to) \
  NS_IMETHOD ReadStartupData(JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadStartupData(cx, _retval); } \
  NS_IMETHOD RegisterChrome(nsIURI *manifestURI, JS::Handle<JS::Value> entries, JSContext* cx, nsIJSRAIIHelper **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterChrome(manifestURI, entries, cx, _retval); } \
  NS_IMETHOD EncodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeBlob(value, cx, _retval); } \
  NS_IMETHOD DecodeBlob(JS::Handle<JS::Value> value, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DecodeBlob(value, cx, _retval); } \
  NS_IMETHOD EnumerateJAR(nsIURI *uri, const nsACString& pattern, nsTArray<nsString >& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateJAR(uri, pattern, _retval); } \
  NS_IMETHOD EnumerateJARSubtree(nsIURI *uri, nsTArray<nsString >& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateJARSubtree(uri, _retval); } \
  NS_IMETHOD InitializeURLPreloader(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitializeURLPreloader(); } 


#endif /* __gen_amIAddonManagerStartup_h__ */
