/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIInterfaceRequestor;
interface nsIX509Cert;
interface nsISSLStatus;

[scriptable, uuid(0729ce8e-8935-4989-ba72-a2d6307f2365)]
interface nsISSLCertErrorDialog : nsISupports
{
  /**
   *  Called when an SSL connection aborts because of a bad certificate,
   *  and no other code is in place for reporting the problem.
   *  Should bring up a dialog to inform the user and display the certificate.
   *
   *  @param status Might be used to query additional information
   *  @param cert The certificate that this error is about
   *  @param textErrorMessage An error message with whitespace formatting
   *  @param htmlErrorMessage Optional, might either be empty,
                              or might contain the same message as in
                              textErrorMessage plus some html formatting.
   *  @param hostName The error occurred when connecting to this hostName.
   *  @param portNumber The error occurred when connecting to this portNumber.
   */
  void showCertError(in nsIInterfaceRequestor ctx, 
                     in nsISSLStatus status,
                     in nsIX509Cert cert,
                     in AString textErrorMessage,
                     in AString htmlErrorMessage,
                     in ACString hostName,
                     in PRUint32 portNumber);
};

%{C++
#define NS_SSLCERTERRORDIALOG_CONTRACTID "@mozilla.org/nsSSLCertErrorDialog;1"
%}
