/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * 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 nsISSLStatus;
interface nsIInterfaceRequestor;

/**
 * A mechanism to report a broken SSL status. The recipient should NOT block.
 * Can be used to obtain the SSL handshake status of a connection
 * that will be canceled because of improper cert status.
 */
[scriptable, uuid(2c3d268c-ad82-49f3-99aa-e9ffddd7a0dc)]
interface nsIBadCertListener2 : nsISupports {

  /**
   *  @param socketInfo A network communication context that can be used to obtain more information
   *                    about the active connection.
   *  @param status The SSL status object that describes the problem(s).
   *  @param targetSite The Site name that was used to open the current connection.
   *
   *  @return The consumer shall return true if it wants to suppress the error message
   *          related to the bad cert (the connection will still get canceled).
   */
  boolean notifyCertProblem(in nsIInterfaceRequestor socketInfo, 
                            in nsISSLStatus status,
                            in AUTF8String targetSite);
};
