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

#ifndef __gen_nsIStreamTransfer_h__
#define __gen_nsIStreamTransfer_h__


#ifndef __gen_nsIChannel_h__
#include "nsIChannel.h"
#endif

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


/* starting interface:    nsIStreamTransfer */
#define NS_ISTREAMTRANSFER_IID_STR "a6cf90f0-15b3-11d2-932e-00805f8add32"

#define NS_ISTREAMTRANSFER_IID \
  {0xa6cf90f0, 0x15b3, 0x11d2, \
    { 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32 }}

class NS_NO_VTABLE nsIStreamTransfer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISTREAMTRANSFER_IID)

  /* [noscript] void SelectFileAndTransferLocation (in nsIChannel aChannel, in nsIDOMWindowInternal parent); */
  NS_IMETHOD SelectFileAndTransferLocation(nsIChannel *aChannel, nsIDOMWindowInternal *parent) = 0;

  /* void SelectFileAndTransferLocationSpec (in string aURL, in nsIDOMWindowInternal parent, in string contentType, in string suggestedName, in boolean doNotValidate, in nsIInputStream postData, in nsISupports cacheKey); */
  NS_IMETHOD SelectFileAndTransferLocationSpec(const char *aURL, nsIDOMWindowInternal *parent, const char *contentType, const char *suggestedName, PRBool doNotValidate, nsIInputStream *postData, nsISupports *cacheKey) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISTREAMTRANSFER \
  NS_IMETHOD SelectFileAndTransferLocation(nsIChannel *aChannel, nsIDOMWindowInternal *parent); \
  NS_IMETHOD SelectFileAndTransferLocationSpec(const char *aURL, nsIDOMWindowInternal *parent, const char *contentType, const char *suggestedName, PRBool doNotValidate, nsIInputStream *postData, nsISupports *cacheKey); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISTREAMTRANSFER(_to) \
  NS_IMETHOD SelectFileAndTransferLocation(nsIChannel *aChannel, nsIDOMWindowInternal *parent) { return _to SelectFileAndTransferLocation(aChannel, parent); } \
  NS_IMETHOD SelectFileAndTransferLocationSpec(const char *aURL, nsIDOMWindowInternal *parent, const char *contentType, const char *suggestedName, PRBool doNotValidate, nsIInputStream *postData, nsISupports *cacheKey) { return _to SelectFileAndTransferLocationSpec(aURL, parent, contentType, suggestedName, doNotValidate, postData, cacheKey); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISTREAMTRANSFER(_to) \
  NS_IMETHOD SelectFileAndTransferLocation(nsIChannel *aChannel, nsIDOMWindowInternal *parent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectFileAndTransferLocation(aChannel, parent); } \
  NS_IMETHOD SelectFileAndTransferLocationSpec(const char *aURL, nsIDOMWindowInternal *parent, const char *contentType, const char *suggestedName, PRBool doNotValidate, nsIInputStream *postData, nsISupports *cacheKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectFileAndTransferLocationSpec(aURL, parent, contentType, suggestedName, doNotValidate, postData, cacheKey); } 

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

/* Header file */
class nsStreamTransfer : public nsIStreamTransfer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSISTREAMTRANSFER

  nsStreamTransfer();
  virtual ~nsStreamTransfer();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsStreamTransfer, nsIStreamTransfer)

nsStreamTransfer::nsStreamTransfer()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* [noscript] void SelectFileAndTransferLocation (in nsIChannel aChannel, in nsIDOMWindowInternal parent); */
NS_IMETHODIMP nsStreamTransfer::SelectFileAndTransferLocation(nsIChannel *aChannel, nsIDOMWindowInternal *parent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SelectFileAndTransferLocationSpec (in string aURL, in nsIDOMWindowInternal parent, in string contentType, in string suggestedName, in boolean doNotValidate, in nsIInputStream postData, in nsISupports cacheKey); */
NS_IMETHODIMP nsStreamTransfer::SelectFileAndTransferLocationSpec(const char *aURL, nsIDOMWindowInternal *parent, const char *contentType, const char *suggestedName, PRBool doNotValidate, nsIInputStream *postData, nsISupports *cacheKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define NS_ISTREAMTRANSFER_CONTRACTID "@mozilla.org/appshell/component/xfer;1"
#define NS_ISTREAMTRANSFER_CLASSNAME "Mozilla Stream Transfer Component"

#endif /* __gen_nsIStreamTransfer_h__ */
