summaryrefslogtreecommitdiffstats
path: root/docshell/base/nsIDocShellLoadInfo.idl
blob: 8804f63a3cf3fc9597935c237373994d0c7fad0b (plain)
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
/* -*- 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;

    /**
     * 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;

    /* 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;

    /** 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;
};