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

#ifndef __gen_nsIWebBrowserPersist_h__
#define __gen_nsIWebBrowserPersist_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

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

class nsIInputStream; /* forward declaration */

class nsIDOMDocument; /* forward declaration */


/* starting interface:    nsIWebBrowserPersistProgress */
#define NS_IWEBBROWSERPERSISTPROGRESS_IID_STR "f823c5b0-af6c-11d4-9597-0020183bf181"

#define NS_IWEBBROWSERPERSISTPROGRESS_IID \
  {0xf823c5b0, 0xaf6c, 0x11d4, \
    { 0x95, 0x97, 0x00, 0x20, 0x18, 0x3b, 0xf1, 0x81 }}

/**
 * @status UNDER_REVIEW
 */
class NS_NO_VTABLE nsIWebBrowserPersistProgress : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWEBBROWSERPERSISTPROGRESS_IID)

  /**
	 * Flags that indicate the beginning and end of ALL downloading.
	 * Every operation with begin with a call to the listener with a
	 * PROGRESS_STARTED flag and finish with a PROGRESS_FINISHED flag.
	 */
  enum { PROGRESS_STARTED = 1U };

  enum { PROGRESS_FINISHED = 2U };

  /**
	 * Flags that indicate the progress of a particular URI
	 */
  enum { PROGRESS_START_URI = 4U };

  enum { PROGRESS_END_URI = 8U };

  /**
	 * Called as the downloading progresses.
     *
	 * aStatus - Status flags indicating the state of progress. 
	 * aURI - URI to which the progress refers or nsnull when it refers
	 *        to everything.
	 * aAbort - 
	 */
  /* void OnProgress (in unsigned long aStatus, in nsIURI aURI, out boolean aAbort); */
  NS_IMETHOD OnProgress(PRUint32 aStatus, nsIURI *aURI, PRBool *aAbort) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBBROWSERPERSISTPROGRESS \
  NS_IMETHOD OnProgress(PRUint32 aStatus, nsIURI *aURI, PRBool *aAbort); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBBROWSERPERSISTPROGRESS(_to) \
  NS_IMETHOD OnProgress(PRUint32 aStatus, nsIURI *aURI, PRBool *aAbort) { return _to ## OnProgress(aStatus, aURI, aAbort); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBBROWSERPERSISTPROGRESS(_to) \
  NS_IMETHOD OnProgress(PRUint32 aStatus, nsIURI *aURI, PRBool *aAbort) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnProgress(aStatus, aURI, aAbort); } 

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

/* Header file */
class nsWebBrowserPersistProgress : public nsIWebBrowserPersistProgress
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBBROWSERPERSISTPROGRESS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebBrowserPersistProgress, nsIWebBrowserPersistProgress)

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

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

/* void OnProgress (in unsigned long aStatus, in nsIURI aURI, out boolean aAbort); */
NS_IMETHODIMP nsWebBrowserPersistProgress::OnProgress(PRUint32 aStatus, nsIURI *aURI, PRBool *aAbort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIWebBrowserPersist */
#define NS_IWEBBROWSERPERSIST_IID_STR "814ba433-a816-4785-9f95-ad3ba0a43dab"

#define NS_IWEBBROWSERPERSIST_IID \
  {0x814ba433, 0xa816, 0x4785, \
    { 0x9f, 0x95, 0xad, 0x3b, 0xa0, 0xa4, 0x3d, 0xab }}

/**
 * The nsIWebBrowserPersist
 */
class NS_NO_VTABLE nsIWebBrowserPersist : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWEBBROWSERPERSIST_IID)

  /**
   * Callback listener for progress notifications.
   */
  /* attribute nsIWebBrowserPersistProgress progressListener; */
  NS_IMETHOD GetProgressListener(nsIWebBrowserPersistProgress * *aProgressListener) = 0;
  NS_IMETHOD SetProgressListener(nsIWebBrowserPersistProgress * aProgressListener) = 0;

  /**
   * Save the specified URI to file.
   *
   * aURI - The URI to save to file.
   * aPostData - Data to pass with in an HTTP request or nsnull.
   * aFileName - Target local filename.
   */
  /* void saveURI (in nsIURI aURI, in nsIInputStream aPostData, in string aFileName); */
  NS_IMETHOD SaveURI(nsIURI *aURI, nsIInputStream *aPostData, const char *aFileName) = 0;

  /* void saveCurrentURI (in string aFileName); */
  NS_IMETHOD SaveCurrentURI(const char *aFileName) = 0;

  /**
   * Save the specified DOM document to file and optionally all linked files
   * including images, CSS, JS & frames.
   *
   * aDocument - Document to save.
   * aFileName - Target local filename.
   * aDataPath - Path to folder (which must exist) to save linked files to,
   *             or nsnull.
   */
  /* void saveDocument (in nsIDOMDocument aDocument, in string aFileName, in string aDataPath); */
  NS_IMETHOD SaveDocument(nsIDOMDocument *aDocument, const char *aFileName, const char *aDataPath) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBBROWSERPERSIST \
  NS_IMETHOD GetProgressListener(nsIWebBrowserPersistProgress * *aProgressListener); \
  NS_IMETHOD SetProgressListener(nsIWebBrowserPersistProgress * aProgressListener); \
  NS_IMETHOD SaveURI(nsIURI *aURI, nsIInputStream *aPostData, const char *aFileName); \
  NS_IMETHOD SaveCurrentURI(const char *aFileName); \
  NS_IMETHOD SaveDocument(nsIDOMDocument *aDocument, const char *aFileName, const char *aDataPath); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBBROWSERPERSIST(_to) \
  NS_IMETHOD GetProgressListener(nsIWebBrowserPersistProgress * *aProgressListener) { return _to ## GetProgressListener(aProgressListener); } \
  NS_IMETHOD SetProgressListener(nsIWebBrowserPersistProgress * aProgressListener) { return _to ## SetProgressListener(aProgressListener); } \
  NS_IMETHOD SaveURI(nsIURI *aURI, nsIInputStream *aPostData, const char *aFileName) { return _to ## SaveURI(aURI, aPostData, aFileName); } \
  NS_IMETHOD SaveCurrentURI(const char *aFileName) { return _to ## SaveCurrentURI(aFileName); } \
  NS_IMETHOD SaveDocument(nsIDOMDocument *aDocument, const char *aFileName, const char *aDataPath) { return _to ## SaveDocument(aDocument, aFileName, aDataPath); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBBROWSERPERSIST(_to) \
  NS_IMETHOD GetProgressListener(nsIWebBrowserPersistProgress * *aProgressListener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetProgressListener(aProgressListener); } \
  NS_IMETHOD SetProgressListener(nsIWebBrowserPersistProgress * aProgressListener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetProgressListener(aProgressListener); } \
  NS_IMETHOD SaveURI(nsIURI *aURI, nsIInputStream *aPostData, const char *aFileName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SaveURI(aURI, aPostData, aFileName); } \
  NS_IMETHOD SaveCurrentURI(const char *aFileName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SaveCurrentURI(aFileName); } \
  NS_IMETHOD SaveDocument(nsIDOMDocument *aDocument, const char *aFileName, const char *aDataPath) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SaveDocument(aDocument, aFileName, aDataPath); } 

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

/* Header file */
class nsWebBrowserPersist : public nsIWebBrowserPersist
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBBROWSERPERSIST

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebBrowserPersist, nsIWebBrowserPersist)

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

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

/* attribute nsIWebBrowserPersistProgress progressListener; */
NS_IMETHODIMP nsWebBrowserPersist::GetProgressListener(nsIWebBrowserPersistProgress * *aProgressListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsWebBrowserPersist::SetProgressListener(nsIWebBrowserPersistProgress * aProgressListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveURI (in nsIURI aURI, in nsIInputStream aPostData, in string aFileName); */
NS_IMETHODIMP nsWebBrowserPersist::SaveURI(nsIURI *aURI, nsIInputStream *aPostData, const char *aFileName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveCurrentURI (in string aFileName); */
NS_IMETHODIMP nsWebBrowserPersist::SaveCurrentURI(const char *aFileName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveDocument (in nsIDOMDocument aDocument, in string aFileName, in string aDataPath); */
NS_IMETHODIMP nsWebBrowserPersist::SaveDocument(nsIDOMDocument *aDocument, const char *aFileName, const char *aDataPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIWebBrowserPersist_h__ */
