/* 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 "nsIPromptService.idl"

interface nsIAuthInformation;
interface nsIAuthPromptCallback;
interface nsICancelable;
interface nsIChannel;
interface mozIDOMWindowProxy;

/**
 * This is an improved version of nsIPromptService that is less prescriptive
 * about the resulting user interface.
 *
 * @status INCOMPLETE do not freeze before fixing bug 228207
 */
[scriptable, uuid(3775ad32-8326-422b-9ff3-87ef1d3f9f0e)]
interface nsIPromptService2 : nsIPromptService {
  // NOTE: These functions differ from their nsIAuthPrompt counterparts by
  // having additional checkbox parameters
  // checkValue can be null meaning to show no checkbox
  // checkboxLabel is a wstring so that it can be null from both JS and C++ in
  // a convenient way
  //
  // See nsIAuthPrompt2 for documentation on the semantics of the other
  // parameters.
  boolean promptAuth(in mozIDOMWindowProxy aParent,
                     in nsIChannel aChannel,
                     in uint32_t level,
                     in nsIAuthInformation authInfo,
                     in wstring checkboxLabel,
                     inout boolean checkValue);

  nsICancelable asyncPromptAuth(in mozIDOMWindowProxy aParent,
                                in nsIChannel aChannel,
                                in nsIAuthPromptCallback aCallback,
                                in nsISupports aContext,
                                in uint32_t level,
                                in nsIAuthInformation authInfo,
                                in wstring checkboxLabel,
                                inout boolean checkValue);
};

