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

#ifndef __gen_nsINSSDialogs_h__
#define __gen_nsINSSDialogs_h__


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

#ifndef __gen_nsIX509Cert_h__
#include "nsIX509Cert.h"
#endif

#ifndef __gen_nsIX509CertDB_h__
#include "nsIX509CertDB.h"
#endif

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

class nsIKeygenThread; /* forward declaration */


/* starting interface:    nsITokenPasswordDialogs */
#define NS_ITOKENPASSWORDDIALOGS_IID_STR "be26b580-1dd1-11b2-9946-c598d0d07727"

#define NS_ITOKENPASSWORDDIALOGS_IID \
  {0xbe26b580, 0x1dd1, 0x11b2, \
    { 0x99, 0x46, 0xc5, 0x98, 0xd0, 0xd0, 0x77, 0x27 }}

/**
 * nsITokenPasswordDialogs
 *  This is the interface for setting and changing password
 *  on a PKCS11 token.
 */
class NS_NO_VTABLE nsITokenPasswordDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITOKENPASSWORDDIALOGS_IID)

  /**
   * setPassword - sets the password/PIN on the named token.
   *   The canceled output value should be set to TRUE when
   *   the user (or implementation) cancels the operation.
   */
  /* void setPassword (in nsIInterfaceRequestor ctx, in wstring tokenName, out boolean canceled); */
  NS_IMETHOD SetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRBool *canceled) = 0;

  /* void getPassword (in nsIInterfaceRequestor ctx, in wstring tokenName, out wstring password, out boolean canceled); */
  NS_IMETHOD GetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRUnichar **password, PRBool *canceled) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITOKENPASSWORDDIALOGS \
  NS_IMETHOD SetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRBool *canceled); \
  NS_IMETHOD GetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRUnichar **password, PRBool *canceled); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITOKENPASSWORDDIALOGS(_to) \
  NS_IMETHOD SetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRBool *canceled) { return _to SetPassword(ctx, tokenName, canceled); } \
  NS_IMETHOD GetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRUnichar **password, PRBool *canceled) { return _to GetPassword(ctx, tokenName, password, canceled); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITOKENPASSWORDDIALOGS(_to) \
  NS_IMETHOD SetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPassword(ctx, tokenName, canceled); } \
  NS_IMETHOD GetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRUnichar **password, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPassword(ctx, tokenName, password, canceled); } 

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

/* Header file */
class nsTokenPasswordDialogs : public nsITokenPasswordDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSITOKENPASSWORDDIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsTokenPasswordDialogs, nsITokenPasswordDialogs)

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

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

/* void setPassword (in nsIInterfaceRequestor ctx, in wstring tokenName, out boolean canceled); */
NS_IMETHODIMP nsTokenPasswordDialogs::SetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPassword (in nsIInterfaceRequestor ctx, in wstring tokenName, out wstring password, out boolean canceled); */
NS_IMETHODIMP nsTokenPasswordDialogs::GetPassword(nsIInterfaceRequestor *ctx, const PRUnichar *tokenName, PRUnichar **password, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIGeneratingKeypairInfoDialogs */
#define NS_IGENERATINGKEYPAIRINFODIALOGS_IID_STR "11bf5cdc-1dd2-11b2-ba6a-c76afb326fa1"

#define NS_IGENERATINGKEYPAIRINFODIALOGS_IID \
  {0x11bf5cdc, 0x1dd2, 0x11b2, \
    { 0xba, 0x6a, 0xc7, 0x6a, 0xfb, 0x32, 0x6f, 0xa1 }}

/**
 * nsIGeneratingKeypairInfoDialogs
 *  This is the interface for giving feedback to the user
 *  while generating a key pair.
 */
class NS_NO_VTABLE nsIGeneratingKeypairInfoDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IGENERATINGKEYPAIRINFODIALOGS_IID)

  /* void displayGeneratingKeypairInfo (in nsIInterfaceRequestor ctx, in nsIKeygenThread runnable); */
  NS_IMETHOD DisplayGeneratingKeypairInfo(nsIInterfaceRequestor *ctx, nsIKeygenThread *runnable) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIGENERATINGKEYPAIRINFODIALOGS \
  NS_IMETHOD DisplayGeneratingKeypairInfo(nsIInterfaceRequestor *ctx, nsIKeygenThread *runnable); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIGENERATINGKEYPAIRINFODIALOGS(_to) \
  NS_IMETHOD DisplayGeneratingKeypairInfo(nsIInterfaceRequestor *ctx, nsIKeygenThread *runnable) { return _to DisplayGeneratingKeypairInfo(ctx, runnable); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIGENERATINGKEYPAIRINFODIALOGS(_to) \
  NS_IMETHOD DisplayGeneratingKeypairInfo(nsIInterfaceRequestor *ctx, nsIKeygenThread *runnable) { return !_to ? NS_ERROR_NULL_POINTER : _to->DisplayGeneratingKeypairInfo(ctx, runnable); } 

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

/* Header file */
class nsGeneratingKeypairInfoDialogs : public nsIGeneratingKeypairInfoDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIGENERATINGKEYPAIRINFODIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsGeneratingKeypairInfoDialogs, nsIGeneratingKeypairInfoDialogs)

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

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

/* void displayGeneratingKeypairInfo (in nsIInterfaceRequestor ctx, in nsIKeygenThread runnable); */
NS_IMETHODIMP nsGeneratingKeypairInfoDialogs::DisplayGeneratingKeypairInfo(nsIInterfaceRequestor *ctx, nsIKeygenThread *runnable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsINSSDialogs */
#define NS_INSSDIALOGS_IID_STR "4a8c5584-1dd2-11b2-bfff-f232dbfab27e"

#define NS_INSSDIALOGS_IID \
  {0x4a8c5584, 0x1dd2, 0x11b2, \
    { 0xbf, 0xff, 0xf2, 0x32, 0xdb, 0xfa, 0xb2, 0x7e }}

/**
 * nsINSSDialogs - a collection of functions that
 *   implement activities that may require interaction
 *   with the user.
 */
class NS_NO_VTABLE nsINSSDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_INSSDIALOGS_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSINSSDIALOGS \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSINSSDIALOGS(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSINSSDIALOGS(_to) \
  /* no methods! */

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

/* Header file */
class nsNSSDialogs : public nsINSSDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSINSSDIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsNSSDialogs, nsINSSDialogs)

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

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

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


/* starting interface:    nsICertificateDialogs */
#define NS_ICERTIFICATEDIALOGS_IID_STR "a03ca940-09be-11d5-ac5d-000064657374"

#define NS_ICERTIFICATEDIALOGS_IID \
  {0xa03ca940, 0x09be, 0x11d5, \
    { 0xac, 0x5d, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74 }}

/**
   * This is the base class for NSSDialogs.  It must support all
   * the interfaces for dialogs that it wants to support.
   * 
   * nsITokenPasswordDialogs is one such implementation.
   */
/**
 * nsICertificateDialogs
 * Provides UI for certificate-related dialogs.
 */
class NS_NO_VTABLE nsICertificateDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICERTIFICATEDIALOGS_IID)

  /**
   * downloadCACert
   *   UI shown when a user is asked to download a new CA cert.  Provides
   *   user with ability to choose trust settings for the cert.
   */
  /* void downloadCACert (in nsIInterfaceRequestor ctx, in nsIX509Cert cert, out unsigned long trust, out boolean canceled); */
  NS_IMETHOD DownloadCACert(nsIInterfaceRequestor *ctx, nsIX509Cert *cert, PRUint32 *trust, PRBool *canceled) = 0;

  /* void cACertExists (in nsIInterfaceRequestor ctx, out boolean canceled); */
  NS_IMETHOD CACertExists(nsIInterfaceRequestor *ctx, PRBool *canceled) = 0;

  /* void setPKCS12FilePassword (in nsIInterfaceRequestor ctx, out wstring password, out boolean canceled); */
  NS_IMETHOD SetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled) = 0;

  /* void getPKCS12FilePassword (in nsIInterfaceRequestor ctx, out wstring password, out boolean canceled); */
  NS_IMETHOD GetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled) = 0;

  /* void viewCert (in nsIX509Cert cert); */
  NS_IMETHOD ViewCert(nsIX509Cert *cert) = 0;

  /* void crlImportStatusDialog (in nsIInterfaceRequestor ctx, in nsICrlEntry nameInDB); */
  NS_IMETHOD CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICrlEntry *nameInDB) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICERTIFICATEDIALOGS \
  NS_IMETHOD DownloadCACert(nsIInterfaceRequestor *ctx, nsIX509Cert *cert, PRUint32 *trust, PRBool *canceled); \
  NS_IMETHOD CACertExists(nsIInterfaceRequestor *ctx, PRBool *canceled); \
  NS_IMETHOD SetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled); \
  NS_IMETHOD GetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled); \
  NS_IMETHOD ViewCert(nsIX509Cert *cert); \
  NS_IMETHOD CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICrlEntry *nameInDB); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICERTIFICATEDIALOGS(_to) \
  NS_IMETHOD DownloadCACert(nsIInterfaceRequestor *ctx, nsIX509Cert *cert, PRUint32 *trust, PRBool *canceled) { return _to DownloadCACert(ctx, cert, trust, canceled); } \
  NS_IMETHOD CACertExists(nsIInterfaceRequestor *ctx, PRBool *canceled) { return _to CACertExists(ctx, canceled); } \
  NS_IMETHOD SetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled) { return _to SetPKCS12FilePassword(ctx, password, canceled); } \
  NS_IMETHOD GetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled) { return _to GetPKCS12FilePassword(ctx, password, canceled); } \
  NS_IMETHOD ViewCert(nsIX509Cert *cert) { return _to ViewCert(cert); } \
  NS_IMETHOD CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICrlEntry *nameInDB) { return _to CrlImportStatusDialog(ctx, nameInDB); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICERTIFICATEDIALOGS(_to) \
  NS_IMETHOD DownloadCACert(nsIInterfaceRequestor *ctx, nsIX509Cert *cert, PRUint32 *trust, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->DownloadCACert(ctx, cert, trust, canceled); } \
  NS_IMETHOD CACertExists(nsIInterfaceRequestor *ctx, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->CACertExists(ctx, canceled); } \
  NS_IMETHOD SetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPKCS12FilePassword(ctx, password, canceled); } \
  NS_IMETHOD GetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPKCS12FilePassword(ctx, password, canceled); } \
  NS_IMETHOD ViewCert(nsIX509Cert *cert) { return !_to ? NS_ERROR_NULL_POINTER : _to->ViewCert(cert); } \
  NS_IMETHOD CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICrlEntry *nameInDB) { return !_to ? NS_ERROR_NULL_POINTER : _to->CrlImportStatusDialog(ctx, nameInDB); } 

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

/* Header file */
class nsCertificateDialogs : public nsICertificateDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSICERTIFICATEDIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsCertificateDialogs, nsICertificateDialogs)

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

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

/* void downloadCACert (in nsIInterfaceRequestor ctx, in nsIX509Cert cert, out unsigned long trust, out boolean canceled); */
NS_IMETHODIMP nsCertificateDialogs::DownloadCACert(nsIInterfaceRequestor *ctx, nsIX509Cert *cert, PRUint32 *trust, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cACertExists (in nsIInterfaceRequestor ctx, out boolean canceled); */
NS_IMETHODIMP nsCertificateDialogs::CACertExists(nsIInterfaceRequestor *ctx, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPKCS12FilePassword (in nsIInterfaceRequestor ctx, out wstring password, out boolean canceled); */
NS_IMETHODIMP nsCertificateDialogs::SetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPKCS12FilePassword (in nsIInterfaceRequestor ctx, out wstring password, out boolean canceled); */
NS_IMETHODIMP nsCertificateDialogs::GetPKCS12FilePassword(nsIInterfaceRequestor *ctx, PRUnichar **password, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void viewCert (in nsIX509Cert cert); */
NS_IMETHODIMP nsCertificateDialogs::ViewCert(nsIX509Cert *cert)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void crlImportStatusDialog (in nsIInterfaceRequestor ctx, in nsICrlEntry nameInDB); */
NS_IMETHODIMP nsCertificateDialogs::CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICrlEntry *nameInDB)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIClientAuthDialogs */
#define NS_ICLIENTAUTHDIALOGS_IID_STR "fa4c7520-1433-11d5-ba24-00108303b117"

#define NS_ICLIENTAUTHDIALOGS_IID \
  {0xfa4c7520, 0x1433, 0x11d5, \
    { 0xba, 0x24, 0x00, 0x10, 0x83, 0x03, 0xb1, 0x17 }}

/**
 * nsIClientAuthDialog
 * Provides UI for SSL client-auth dialogs.
 */
class NS_NO_VTABLE nsIClientAuthDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICLIENTAUTHDIALOGS_IID)

  /**
   * display
   *   UI shown when a user is asked to do SSL client auth.
   */
  /* void ChooseCertificate (in nsIInterfaceRequestor ctx, in wstring cn, in wstring organization, in wstring issuer, [array, size_is (count)] in wstring certNickList, [array, size_is (count)] in wstring certDetailsList, in PRUint32 count, out PRInt32 selectedIndex, out boolean canceled); */
  NS_IMETHOD ChooseCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *cn, const PRUnichar *organization, const PRUnichar *issuer, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICLIENTAUTHDIALOGS \
  NS_IMETHOD ChooseCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *cn, const PRUnichar *organization, const PRUnichar *issuer, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICLIENTAUTHDIALOGS(_to) \
  NS_IMETHOD ChooseCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *cn, const PRUnichar *organization, const PRUnichar *issuer, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled) { return _to ChooseCertificate(ctx, cn, organization, issuer, certNickList, certDetailsList, count, selectedIndex, canceled); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICLIENTAUTHDIALOGS(_to) \
  NS_IMETHOD ChooseCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *cn, const PRUnichar *organization, const PRUnichar *issuer, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->ChooseCertificate(ctx, cn, organization, issuer, certNickList, certDetailsList, count, selectedIndex, canceled); } 

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

/* Header file */
class nsClientAuthDialogs : public nsIClientAuthDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSICLIENTAUTHDIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsClientAuthDialogs, nsIClientAuthDialogs)

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

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

/* void ChooseCertificate (in nsIInterfaceRequestor ctx, in wstring cn, in wstring organization, in wstring issuer, [array, size_is (count)] in wstring certNickList, [array, size_is (count)] in wstring certDetailsList, in PRUint32 count, out PRInt32 selectedIndex, out boolean canceled); */
NS_IMETHODIMP nsClientAuthDialogs::ChooseCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *cn, const PRUnichar *organization, const PRUnichar *issuer, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsICertPickDialogs */
#define NS_ICERTPICKDIALOGS_IID_STR "51d59b08-1dd2-11b2-ad4a-a51b92f8a184"

#define NS_ICERTPICKDIALOGS_IID \
  {0x51d59b08, 0x1dd2, 0x11b2, \
    { 0xad, 0x4a, 0xa5, 0x1b, 0x92, 0xf8, 0xa1, 0x84 }}

/**
 * nsICertPicker
 * Provides generic UI for choosing a certificate
 */
class NS_NO_VTABLE nsICertPickDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICERTPICKDIALOGS_IID)

  /**
   * PickCertificate
   *   General purpose certificate prompter
   */
  /* void PickCertificate (in nsIInterfaceRequestor ctx, in wstring title, in wstring infoPrompt, [array, size_is (count)] in wstring certNickList, [array, size_is (count)] in wstring certDetailsList, in PRUint32 count, out PRInt32 selectedIndex, out boolean canceled); */
  NS_IMETHOD PickCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *title, const PRUnichar *infoPrompt, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICERTPICKDIALOGS \
  NS_IMETHOD PickCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *title, const PRUnichar *infoPrompt, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICERTPICKDIALOGS(_to) \
  NS_IMETHOD PickCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *title, const PRUnichar *infoPrompt, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled) { return _to PickCertificate(ctx, title, infoPrompt, certNickList, certDetailsList, count, selectedIndex, canceled); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICERTPICKDIALOGS(_to) \
  NS_IMETHOD PickCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *title, const PRUnichar *infoPrompt, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->PickCertificate(ctx, title, infoPrompt, certNickList, certDetailsList, count, selectedIndex, canceled); } 

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

/* Header file */
class nsCertPickDialogs : public nsICertPickDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSICERTPICKDIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsCertPickDialogs, nsICertPickDialogs)

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

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

/* void PickCertificate (in nsIInterfaceRequestor ctx, in wstring title, in wstring infoPrompt, [array, size_is (count)] in wstring certNickList, [array, size_is (count)] in wstring certDetailsList, in PRUint32 count, out PRInt32 selectedIndex, out boolean canceled); */
NS_IMETHODIMP nsCertPickDialogs::PickCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *title, const PRUnichar *infoPrompt, const PRUnichar **certNickList, const PRUnichar **certDetailsList, PRUint32 count, PRInt32 *selectedIndex, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsITokenDialogs */
#define NS_ITOKENDIALOGS_IID_STR "bb4bae9c-39c5-11d5-ba26-00108303b117"

#define NS_ITOKENDIALOGS_IID \
  {0xbb4bae9c, 0x39c5, 0x11d5, \
    { 0xba, 0x26, 0x00, 0x10, 0x83, 0x03, 0xb1, 0x17 }}

class NS_NO_VTABLE nsITokenDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITOKENDIALOGS_IID)

  /* void ChooseToken (in nsIInterfaceRequestor ctx, [array, size_is (count)] in wstring tokenNameList, in PRUint32 count, out wstring tokenName, out boolean canceled); */
  NS_IMETHOD ChooseToken(nsIInterfaceRequestor *ctx, const PRUnichar **tokenNameList, PRUint32 count, PRUnichar **tokenName, PRBool *canceled) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITOKENDIALOGS \
  NS_IMETHOD ChooseToken(nsIInterfaceRequestor *ctx, const PRUnichar **tokenNameList, PRUint32 count, PRUnichar **tokenName, PRBool *canceled); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITOKENDIALOGS(_to) \
  NS_IMETHOD ChooseToken(nsIInterfaceRequestor *ctx, const PRUnichar **tokenNameList, PRUint32 count, PRUnichar **tokenName, PRBool *canceled) { return _to ChooseToken(ctx, tokenNameList, count, tokenName, canceled); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITOKENDIALOGS(_to) \
  NS_IMETHOD ChooseToken(nsIInterfaceRequestor *ctx, const PRUnichar **tokenNameList, PRUint32 count, PRUnichar **tokenName, PRBool *canceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->ChooseToken(ctx, tokenNameList, count, tokenName, canceled); } 

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

/* Header file */
class nsTokenDialogs : public nsITokenDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSITOKENDIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsTokenDialogs, nsITokenDialogs)

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

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

/* void ChooseToken (in nsIInterfaceRequestor ctx, [array, size_is (count)] in wstring tokenNameList, in PRUint32 count, out wstring tokenName, out boolean canceled); */
NS_IMETHODIMP nsTokenDialogs::ChooseToken(nsIInterfaceRequestor *ctx, const PRUnichar **tokenNameList, PRUint32 count, PRUnichar **tokenName, PRBool *canceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIDOMCryptoDialogs */
#define NS_IDOMCRYPTODIALOGS_IID_STR "1f8fe77e-1dd2-11b2-8dd2-e55f8d3465b8"

#define NS_IDOMCRYPTODIALOGS_IID \
  {0x1f8fe77e, 0x1dd2, 0x11b2, \
    { 0x8d, 0xd2, 0xe5, 0x5f, 0x8d, 0x34, 0x65, 0xb8 }}

class NS_NO_VTABLE nsIDOMCryptoDialogs : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IDOMCRYPTODIALOGS_IID)

  /**
   * This method is used to warn the user the web site is
   * trying to escrow the generated private key.  This 
   * method should return true if the user wants to proceed
   * and false if the user cancels the action.
   */
  /* boolean ConfirmKeyEscrow (in nsIX509Cert escrowAuthority); */
  NS_IMETHOD ConfirmKeyEscrow(nsIX509Cert *escrowAuthority, PRBool *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIDOMCRYPTODIALOGS \
  NS_IMETHOD ConfirmKeyEscrow(nsIX509Cert *escrowAuthority, PRBool *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIDOMCRYPTODIALOGS(_to) \
  NS_IMETHOD ConfirmKeyEscrow(nsIX509Cert *escrowAuthority, PRBool *_retval) { return _to ConfirmKeyEscrow(escrowAuthority, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIDOMCRYPTODIALOGS(_to) \
  NS_IMETHOD ConfirmKeyEscrow(nsIX509Cert *escrowAuthority, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ConfirmKeyEscrow(escrowAuthority, _retval); } 

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

/* Header file */
class nsDOMCryptoDialogs : public nsIDOMCryptoDialogs
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIDOMCRYPTODIALOGS

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsDOMCryptoDialogs, nsIDOMCryptoDialogs)

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

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

/* boolean ConfirmKeyEscrow (in nsIX509Cert escrowAuthority); */
NS_IMETHODIMP nsDOMCryptoDialogs::ConfirmKeyEscrow(nsIX509Cert *escrowAuthority, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define NS_NSSDIALOGS_CONTRACTID "@mozilla.org/nsNSSDialogs;1"

#endif /* __gen_nsINSSDialogs_h__ */
