/* 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 nsIHandlerInfo;
interface nsIHelperAppLauncher;
interface nsIURI;
interface nsIInterfaceRequestor;

/**
 * This is used to ask a user what they would like to do with a given piece of
 * content.
 */
[scriptable, uuid(456ca3b2-02be-4f97-89a2-08c08d3ad88f)]
interface nsIContentDispatchChooser : nsISupports {
 /**
  * This request is passed to the helper app dialog because Gecko can not
  * handle content of this type.
  */
  const unsigned long REASON_CANNOT_HANDLE = 0;

 /**
  * Asks the user what to do with the content.
  *
  * @param aHander
  *        The interface describing the details of how this content should or
  *        can be handled.
  * @param aWindowContext
  *        The parent window context to show this chooser.  This can be null,
  *        and some implementations may not care about it.  Generally, you'll
  *        want to pass an nsIDOMWindow in so the chooser can be properly
  *        parented when opened.
  * @param aURI
  *        The URI of the resource that we are asking about.
  * @param aReason
  *        The reason why we are asking (see above).
  */
  void ask(in nsIHandlerInfo aHandler,
           in nsIInterfaceRequestor aWindowContext,
           in nsIURI aURI,
           in unsigned long aReason);
};