DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (b31ea256e617)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
/* -*- Mode: IDL; tab-width: 4; 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"

/**
 * The nsIDocShellLoadInfo interface defines an interface for specifying
 * setup information used in a nsIDocShell::loadURI call.
 */
 
interface nsIURI;
interface nsIInputStream;
interface nsISHEntry;
interface nsIDocShell;
interface nsIPrincipal;

typedef long nsDocShellInfoLoadType;
typedef unsigned long nsDocShellInfoReferrerPolicy;

[scriptable, uuid(e7570e5a-f1d6-452d-b4f8-b35fdc63aa03)]
interface nsIDocShellLoadInfo : nsISupports
{
    /** This is the referrer for the load. */
    attribute nsIURI referrer;

    /**
     * The originalURI to be passed to nsIDocShell.internalLoad. May be null.
     */
    attribute nsIURI originalURI;

    /**
     * Result principal URL from nsILoadInfo, may be null.  Valid only if
     * the "IsSome" part is true (has the same meaning as isSome()
     * on mozilla::Maybe.)
     *
     * In C++ please use Get/SetMaybeResultPrincipalURI helper functions.
     */
    attribute nsIURI resultPrincipalURI;
    attribute boolean resultPrincipalURIIsSome;

    /**
     * If a refresh is caused by http-equiv="refresh" we want to set
     * aResultPrincipalURI, but we do not want to overwrite a channel's
     * ResultPrincipalURI, if it has already been set on the channel by a
     * protocol handler.
     * In other cases we want to force rewrite, e.g. Reload.
     */
    attribute boolean keepResultPrincipalURIIfSet;

    /**
     * loadReplace flag to be passed to nsIDocShell.internalLoad.
     */
    attribute boolean loadReplace;

    /** The principal of the load, that is, the entity responsible for 
     *  causing the load to occur. In most cases the referrer and
     *  the triggeringPrincipal's URI will be identical.
     */
    attribute nsIPrincipal triggeringPrincipal;

    /** If this attribute is true and no triggeringPrincipal is specified,
     * copy the principal from the referring document.
     */
    attribute boolean inheritPrincipal;

    /** If this attribute is true only ever use the principal specified
     *  by the triggeringPrincipal and inheritPrincipal attributes.
     *  If there are security reasons for why this is unsafe, such
     *  as trying to use a systemprincipal as the triggeringPrincipal
     *  for a content docshell the load fails.
     */
    attribute boolean principalIsExplicit;

    /**
     * If this attribute is true, then a top-level navigation
     * to a data URI will be allowed.
     */
    attribute boolean forceAllowDataURI;

    /**
     * If this attribute is true, this load corresponds to a frame
     * element loading its original src (or srcdoc) attribute.
     */
    attribute boolean originalFrameSrc;

    /* these are load type enums... */
    const long loadNormal = 0;                     // Normal Load
    const long loadNormalReplace = 1;              // Normal Load but replaces current history slot
    const long loadHistory = 2;                    // Load from history
    const long loadReloadNormal = 3;               // Reload
    const long loadReloadBypassCache = 4;
    const long loadReloadBypassProxy = 5;
    const long loadReloadBypassProxyAndCache = 6;
    const long loadLink = 7;
    const long loadRefresh = 8;
    const long loadReloadCharsetChange = 9;
    const long loadBypassHistory = 10;
    const long loadStopContent = 11;
    const long loadStopContentAndReplace = 12;
    const long loadNormalExternal = 13;
    const long loadNormalBypassCache = 14;
    const long loadNormalBypassProxy = 15;
    const long loadNormalBypassProxyAndCache = 16;
    const long loadPushState = 17;                 // history.pushState or replaceState
    const long loadReplaceBypassCache = 18;
    const long loadReloadMixedContent = 19;
    const long loadNormalAllowMixedContent = 20;
    const long loadReloadCharsetChangeBypassCache = 21;
    const long loadReloadCharsetChangeBypassProxyAndCache = 22;

    /** Contains a load type as specified by the load* constants */
    attribute nsDocShellInfoLoadType loadType;

    /** SHEntry for this page */
    attribute nsISHEntry SHEntry;

    /** Target for load, like _content, _blank etc. */
    attribute wstring target;

    /** Post data */
    attribute nsIInputStream postDataStream;

    /** Additional headers */
    attribute nsIInputStream headersStream;

    /** True if the referrer should be sent, false if it shouldn't be
     *  sent, even if it's available. This attribute defaults to true.
     */
    attribute boolean sendReferrer;

    /** Referrer policy for the load. This attribute holds one of
     *  the values (REFERRER_POLICY_*) defined in nsIHttpChannel.
     */
    attribute nsDocShellInfoReferrerPolicy referrerPolicy;

    /** True if the docshell has been created to load an iframe where the
     * srcdoc attribute has been set.  Set when srcdocData is specified.
     */
    readonly attribute boolean isSrcdocLoad;

    /** When set, the load will be interpreted as a srcdoc load, where contents
     * of this string will be loaded instead of the URI.  Setting srcdocData
     * sets isSrcdocLoad to true
     */
    attribute AString srcdocData;

    /** When set, this is the Source Browsing Context for the navigation. */
    attribute nsIDocShell sourceDocShell;

    /**
     * Used for srcdoc loads to give view-source knowledge of the load's base
     * URI as this information isn't embedded in the load's URI.
     */
    attribute nsIURI baseURI;

    /**
     * This will be true if this load is triggered by attribute changes.
     * See nsILoadInfo.isFromProcessingFrameAttributes
     */
    attribute boolean isFromProcessingFrameAttributes;
};

%{C++

#include "mozilla/Maybe.h"

namespace mozilla {

/**
 * Helper function allowing convenient work with mozilla::Maybe in C++, hiding
 * resultPrincipalURI and resultPrincipalURIIsSome attributes from the consumer.
 */
void
GetMaybeResultPrincipalURI(nsIDocShellLoadInfo* aLoadInfo, Maybe<nsCOMPtr<nsIURI>>& aRPURI);
void
SetMaybeResultPrincipalURI(nsIDocShellLoadInfo* aLoadInfo, Maybe<nsCOMPtr<nsIURI>> const& aRPURI);

} // mozilla

%}