/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/nsIExternalSharingAppService.idl
 */

#ifndef __gen_nsIExternalSharingAppService_h__
#define __gen_nsIExternalSharingAppService_h__


#ifndef __gen_nsIMIMEInfo_h__
#include "nsIMIMEInfo.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
#define NS_EXTERNALSHARINGAPPSERVICE_CONTRACTID    "@mozilla.org/uriloader/external-sharing-app-service;1"

/* starting interface:    nsISharingHandlerApp */
#define NS_ISHARINGHANDLERAPP_IID_STR "7111f769-53ec-41fd-b314-613661d5b6ba"

#define NS_ISHARINGHANDLERAPP_IID \
  {0x7111f769, 0x53ec, 0x41fd, \
    { 0xb3, 0x14, 0x61, 0x36, 0x61, 0xd5, 0xb6, 0xba }}

class NS_NO_VTABLE nsISharingHandlerApp : public nsIHandlerApp {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISHARINGHANDLERAPP_IID)

  /* void share (in AString data, [optional] in AString title); */
  NS_IMETHOD Share(const nsAString & data, const nsAString & title) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsISharingHandlerApp, NS_ISHARINGHANDLERAPP_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISHARINGHANDLERAPP \
  NS_IMETHOD Share(const nsAString & data, const nsAString & title) 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_NSISHARINGHANDLERAPP \
  NS_METHOD Share(const nsAString & data, const nsAString & title); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISHARINGHANDLERAPP(_to) \
  NS_IMETHOD Share(const nsAString & data, const nsAString & title) override { return _to Share(data, title); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISHARINGHANDLERAPP(_to) \
  NS_IMETHOD Share(const nsAString & data, const nsAString & title) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Share(data, title); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsSharingHandlerApp : public nsISharingHandlerApp
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISHARINGHANDLERAPP

  nsSharingHandlerApp();

private:
  ~nsSharingHandlerApp();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsSharingHandlerApp, nsISharingHandlerApp)

nsSharingHandlerApp::nsSharingHandlerApp()
{
  /* member initializers and constructor code */
}

nsSharingHandlerApp::~nsSharingHandlerApp()
{
  /* destructor code */
}

/* void share (in AString data, [optional] in AString title); */
NS_IMETHODIMP nsSharingHandlerApp::Share(const nsAString & data, const nsAString & title)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIExternalSharingAppService */
#define NS_IEXTERNALSHARINGAPPSERVICE_IID_STR "cf7d04e5-3892-482e-81bb-073dc1c83f76"

#define NS_IEXTERNALSHARINGAPPSERVICE_IID \
  {0xcf7d04e5, 0x3892, 0x482e, \
    { 0x81, 0xbb, 0x07, 0x3d, 0xc1, 0xc8, 0x3f, 0x76 }}

class NS_NO_VTABLE nsIExternalSharingAppService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IEXTERNALSHARINGAPPSERVICE_IID)

  /* void shareWithDefault (in AString data, in AString mime, [optional] in AString title); */
  NS_IMETHOD ShareWithDefault(const nsAString & data, const nsAString & mime, const nsAString & title) = 0;

  /* void getSharingApps (in AString aMIMEType, [optional] out unsigned long aLen, [array, size_is (aLen), retval] out nsISharingHandlerApp handlerApps); */
  NS_IMETHOD GetSharingApps(const nsAString & aMIMEType, uint32_t *aLen, nsISharingHandlerApp * **handlerApps) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIExternalSharingAppService, NS_IEXTERNALSHARINGAPPSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIEXTERNALSHARINGAPPSERVICE \
  NS_IMETHOD ShareWithDefault(const nsAString & data, const nsAString & mime, const nsAString & title) override; \
  NS_IMETHOD GetSharingApps(const nsAString & aMIMEType, uint32_t *aLen, nsISharingHandlerApp * **handlerApps) 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_NSIEXTERNALSHARINGAPPSERVICE \
  NS_METHOD ShareWithDefault(const nsAString & data, const nsAString & mime, const nsAString & title); \
  NS_METHOD GetSharingApps(const nsAString & aMIMEType, uint32_t *aLen, nsISharingHandlerApp * **handlerApps); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIEXTERNALSHARINGAPPSERVICE(_to) \
  NS_IMETHOD ShareWithDefault(const nsAString & data, const nsAString & mime, const nsAString & title) override { return _to ShareWithDefault(data, mime, title); } \
  NS_IMETHOD GetSharingApps(const nsAString & aMIMEType, uint32_t *aLen, nsISharingHandlerApp * **handlerApps) override { return _to GetSharingApps(aMIMEType, aLen, handlerApps); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIEXTERNALSHARINGAPPSERVICE(_to) \
  NS_IMETHOD ShareWithDefault(const nsAString & data, const nsAString & mime, const nsAString & title) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ShareWithDefault(data, mime, title); } \
  NS_IMETHOD GetSharingApps(const nsAString & aMIMEType, uint32_t *aLen, nsISharingHandlerApp * **handlerApps) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharingApps(aMIMEType, aLen, handlerApps); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsExternalSharingAppService : public nsIExternalSharingAppService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIEXTERNALSHARINGAPPSERVICE

  nsExternalSharingAppService();

private:
  ~nsExternalSharingAppService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsExternalSharingAppService, nsIExternalSharingAppService)

nsExternalSharingAppService::nsExternalSharingAppService()
{
  /* member initializers and constructor code */
}

nsExternalSharingAppService::~nsExternalSharingAppService()
{
  /* destructor code */
}

/* void shareWithDefault (in AString data, in AString mime, [optional] in AString title); */
NS_IMETHODIMP nsExternalSharingAppService::ShareWithDefault(const nsAString & data, const nsAString & mime, const nsAString & title)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharingApps (in AString aMIMEType, [optional] out unsigned long aLen, [array, size_is (aLen), retval] out nsISharingHandlerApp handlerApps); */
NS_IMETHODIMP nsExternalSharingAppService::GetSharingApps(const nsAString & aMIMEType, uint32_t *aLen, nsISharingHandlerApp * **handlerApps)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIExternalSharingAppService_h__ */
