/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * 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"

/**
 * The nsIWebBrowserSetup interface lets you set properties on a browser
 * object; you can do so at any time during the life cycle of the browser.
 *
 * @note Unless stated otherwise, settings are presumed to be enabled by
 *       default.
 */
[scriptable, uuid(F15398A0-8018-11d3-AF70-00A024FFC08C)]
interface nsIWebBrowserSetup : nsISupports
{
    /**
     * Boolean. Enables/disables plugin support for this browser.
     *
     * @see setProperty
     */
    const unsigned long SETUP_ALLOW_PLUGINS         = 1;

    /**
     * Boolean. Enables/disables Javascript support for this browser.
     *
     * @see setProperty
     */
    const unsigned long SETUP_ALLOW_JAVASCRIPT      = 2;

    /**
     * Boolean. Enables/disables meta redirect support for this browser.
     * Meta redirect timers will be ignored if this option is disabled.
     *
     * @see setProperty
     */
    const unsigned long SETUP_ALLOW_META_REDIRECTS  = 3;

    /**
     * Boolean. Enables/disables subframes within the browser
     *
     * @see setProperty
     */
    const unsigned long SETUP_ALLOW_SUBFRAMES       = 4;

    /**
     * Boolean. Enables/disables image loading for this browser
     * window. If you disable the images, load a page, then enable the images,
     * the page will *not* automatically load the images for the previously
     * loaded page. This flag controls the state of a webBrowser at load time 
     * and does not automatically re-load a page when the state is toggled. 
     * Reloading must be done by hand, or by walking through the DOM tree and 
     * re-setting the src attributes.
     *
     * @see setProperty
     */
    const unsigned long SETUP_ALLOW_IMAGES          = 5;

    /**
     * Boolean. Enables/disables whether the document as a whole gets focus before
     * traversing the document's content, or after traversing its content.
     *
     * NOTE: this property is obsolete and now has no effect
     *
     * @see setProperty
     */
    const unsigned long SETUP_FOCUS_DOC_BEFORE_CONTENT = 6;

    /**
     * Boolean. Enables/disables the use of global history in the browser. Visited
     * URLs will not be recorded in the global history when it is disabled.
     *
     * @see setProperty
     */
    const unsigned long SETUP_USE_GLOBAL_HISTORY    = 256;

    /**
     * Boolean. A value of PR_TRUE makes the browser a chrome wrapper.
     * Default is PR_FALSE.
     *
     * @since mozilla1.0
     *
     * @see setProperty
     */
    const unsigned long SETUP_IS_CHROME_WRAPPER     = 7;


    /**
     * Boolean. Enables/disables DNS prefetch for HTML anchors in this browser.
     * This takes effect starting with the next pageload after the property is
     * set.  The default is to not allow DNS prefetch, for backwards
     * compatibility.
     *
     * @see setProperty
     */
    const unsigned long SETUP_ALLOW_DNS_PREFETCH    = 8;

    /**
     * Sets an integer or boolean property on the new web browser object.
     * Only PR_TRUE and PR_FALSE are legal boolean values.
     *
     * @param aId The identifier of the property to be set.
     * @param aValue The value of the property.
     */
    void setProperty(in unsigned long aId, in unsigned long aValue);
};