Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #include "nsDocShellLoadInfo.h"
8 : #include "nsISHEntry.h"
9 : #include "nsIInputStream.h"
10 : #include "nsIURI.h"
11 : #include "nsIDocShell.h"
12 : #include "mozilla/net/ReferrerPolicy.h"
13 : #include "mozilla/Unused.h"
14 :
15 : namespace mozilla {
16 :
17 : void
18 6 : GetMaybeResultPrincipalURI(nsIDocShellLoadInfo* aLoadInfo, Maybe<nsCOMPtr<nsIURI>>& aRPURI)
19 : {
20 6 : if (!aLoadInfo) {
21 6 : return;
22 : }
23 :
24 : nsresult rv;
25 :
26 : bool isSome;
27 6 : rv = aLoadInfo->GetResultPrincipalURIIsSome(&isSome);
28 6 : if (NS_WARN_IF(NS_FAILED(rv))) {
29 0 : return;
30 : }
31 :
32 6 : aRPURI.reset();
33 :
34 6 : if (!isSome) {
35 6 : return;
36 : }
37 :
38 0 : nsCOMPtr<nsIURI> uri;
39 0 : rv = aLoadInfo->GetResultPrincipalURI(getter_AddRefs(uri));
40 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
41 0 : return;
42 : }
43 :
44 0 : aRPURI.emplace(Move(uri));
45 : }
46 :
47 : void
48 0 : SetMaybeResultPrincipalURI(nsIDocShellLoadInfo* aLoadInfo, Maybe<nsCOMPtr<nsIURI>> const& aRPURI)
49 : {
50 0 : if (!aLoadInfo) {
51 0 : return;
52 : }
53 :
54 : nsresult rv;
55 :
56 0 : rv = aLoadInfo->SetResultPrincipalURI(aRPURI.refOr(nullptr));
57 0 : Unused << NS_WARN_IF(NS_FAILED(rv));
58 :
59 0 : rv = aLoadInfo->SetResultPrincipalURIIsSome(aRPURI.isSome());
60 0 : Unused << NS_WARN_IF(NS_FAILED(rv));
61 : }
62 :
63 : } // mozilla
64 :
65 6 : nsDocShellLoadInfo::nsDocShellLoadInfo()
66 : : mResultPrincipalURIIsSome(false)
67 : , mLoadReplace(false)
68 : , mInheritPrincipal(false)
69 : , mPrincipalIsExplicit(false)
70 : , mSendReferrer(true)
71 : , mReferrerPolicy(mozilla::net::RP_Unset)
72 : , mLoadType(nsIDocShellLoadInfo::loadNormal)
73 6 : , mIsSrcdocLoad(false)
74 : {
75 6 : }
76 :
77 12 : nsDocShellLoadInfo::~nsDocShellLoadInfo()
78 : {
79 18 : }
80 :
81 18 : NS_IMPL_ADDREF(nsDocShellLoadInfo)
82 18 : NS_IMPL_RELEASE(nsDocShellLoadInfo)
83 :
84 12 : NS_INTERFACE_MAP_BEGIN(nsDocShellLoadInfo)
85 12 : NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDocShellLoadInfo)
86 12 : NS_INTERFACE_MAP_ENTRY(nsIDocShellLoadInfo)
87 0 : NS_INTERFACE_MAP_END
88 :
89 : NS_IMETHODIMP
90 6 : nsDocShellLoadInfo::GetReferrer(nsIURI** aReferrer)
91 : {
92 6 : NS_ENSURE_ARG_POINTER(aReferrer);
93 :
94 6 : *aReferrer = mReferrer;
95 6 : NS_IF_ADDREF(*aReferrer);
96 6 : return NS_OK;
97 : }
98 :
99 : NS_IMETHODIMP
100 3 : nsDocShellLoadInfo::SetReferrer(nsIURI* aReferrer)
101 : {
102 3 : mReferrer = aReferrer;
103 3 : return NS_OK;
104 : }
105 :
106 : NS_IMETHODIMP
107 6 : nsDocShellLoadInfo::GetOriginalURI(nsIURI** aOriginalURI)
108 : {
109 6 : NS_ENSURE_ARG_POINTER(aOriginalURI);
110 :
111 6 : *aOriginalURI = mOriginalURI;
112 6 : NS_IF_ADDREF(*aOriginalURI);
113 6 : return NS_OK;
114 : }
115 :
116 : NS_IMETHODIMP
117 0 : nsDocShellLoadInfo::SetOriginalURI(nsIURI* aOriginalURI)
118 : {
119 0 : mOriginalURI = aOriginalURI;
120 0 : return NS_OK;
121 : }
122 :
123 : NS_IMETHODIMP
124 0 : nsDocShellLoadInfo::GetResultPrincipalURI(nsIURI** aResultPrincipalURI)
125 : {
126 0 : NS_ENSURE_ARG_POINTER(aResultPrincipalURI);
127 :
128 0 : *aResultPrincipalURI = mResultPrincipalURI;
129 0 : NS_IF_ADDREF(*aResultPrincipalURI);
130 0 : return NS_OK;
131 : }
132 :
133 : NS_IMETHODIMP
134 0 : nsDocShellLoadInfo::SetResultPrincipalURI(nsIURI* aResultPrincipalURI)
135 : {
136 0 : mResultPrincipalURI = aResultPrincipalURI;
137 0 : return NS_OK;
138 : }
139 :
140 : NS_IMETHODIMP
141 6 : nsDocShellLoadInfo::GetResultPrincipalURIIsSome(bool* aIsSome)
142 : {
143 6 : *aIsSome = mResultPrincipalURIIsSome;
144 6 : return NS_OK;
145 : }
146 :
147 : NS_IMETHODIMP
148 0 : nsDocShellLoadInfo::SetResultPrincipalURIIsSome(bool aIsSome)
149 : {
150 0 : mResultPrincipalURIIsSome = aIsSome;
151 0 : return NS_OK;
152 : }
153 :
154 : NS_IMETHODIMP
155 6 : nsDocShellLoadInfo::GetLoadReplace(bool* aLoadReplace)
156 : {
157 6 : *aLoadReplace = mLoadReplace;
158 6 : return NS_OK;
159 : }
160 :
161 : NS_IMETHODIMP
162 0 : nsDocShellLoadInfo::SetLoadReplace(bool aLoadReplace)
163 : {
164 0 : mLoadReplace = aLoadReplace;
165 0 : return NS_OK;
166 : }
167 :
168 : NS_IMETHODIMP
169 6 : nsDocShellLoadInfo::GetTriggeringPrincipal(nsIPrincipal** aTriggeringPrincipal)
170 : {
171 6 : NS_ENSURE_ARG_POINTER(aTriggeringPrincipal);
172 6 : NS_IF_ADDREF(*aTriggeringPrincipal = mTriggeringPrincipal);
173 6 : return NS_OK;
174 : }
175 :
176 : NS_IMETHODIMP
177 6 : nsDocShellLoadInfo::SetTriggeringPrincipal(nsIPrincipal* aTriggeringPrincipal)
178 : {
179 6 : mTriggeringPrincipal = aTriggeringPrincipal;
180 6 : return NS_OK;
181 : }
182 :
183 : NS_IMETHODIMP
184 6 : nsDocShellLoadInfo::GetInheritPrincipal(bool* aInheritPrincipal)
185 : {
186 6 : NS_ENSURE_ARG_POINTER(aInheritPrincipal);
187 6 : *aInheritPrincipal = mInheritPrincipal;
188 6 : return NS_OK;
189 : }
190 :
191 : NS_IMETHODIMP
192 0 : nsDocShellLoadInfo::SetInheritPrincipal(bool aInheritPrincipal)
193 : {
194 0 : mInheritPrincipal = aInheritPrincipal;
195 0 : return NS_OK;
196 : }
197 :
198 : NS_IMETHODIMP
199 6 : nsDocShellLoadInfo::GetPrincipalIsExplicit(bool* aPrincipalIsExplicit)
200 : {
201 6 : *aPrincipalIsExplicit = mPrincipalIsExplicit;
202 6 : return NS_OK;
203 : }
204 :
205 : NS_IMETHODIMP
206 0 : nsDocShellLoadInfo::SetPrincipalIsExplicit(bool aPrincipalIsExplicit)
207 : {
208 0 : mPrincipalIsExplicit = aPrincipalIsExplicit;
209 0 : return NS_OK;
210 : }
211 :
212 : NS_IMETHODIMP
213 6 : nsDocShellLoadInfo::GetLoadType(nsDocShellInfoLoadType* aLoadType)
214 : {
215 6 : NS_ENSURE_ARG_POINTER(aLoadType);
216 :
217 6 : *aLoadType = mLoadType;
218 6 : return NS_OK;
219 : }
220 :
221 : NS_IMETHODIMP
222 3 : nsDocShellLoadInfo::SetLoadType(nsDocShellInfoLoadType aLoadType)
223 : {
224 3 : mLoadType = aLoadType;
225 3 : return NS_OK;
226 : }
227 :
228 : NS_IMETHODIMP
229 6 : nsDocShellLoadInfo::GetSHEntry(nsISHEntry** aSHEntry)
230 : {
231 6 : NS_ENSURE_ARG_POINTER(aSHEntry);
232 :
233 6 : *aSHEntry = mSHEntry;
234 6 : NS_IF_ADDREF(*aSHEntry);
235 6 : return NS_OK;
236 : }
237 :
238 : NS_IMETHODIMP
239 0 : nsDocShellLoadInfo::SetSHEntry(nsISHEntry* aSHEntry)
240 : {
241 0 : mSHEntry = aSHEntry;
242 0 : return NS_OK;
243 : }
244 :
245 : NS_IMETHODIMP
246 6 : nsDocShellLoadInfo::GetTarget(char16_t** aTarget)
247 : {
248 6 : NS_ENSURE_ARG_POINTER(aTarget);
249 :
250 6 : *aTarget = ToNewUnicode(mTarget);
251 :
252 6 : return NS_OK;
253 : }
254 :
255 : NS_IMETHODIMP
256 0 : nsDocShellLoadInfo::SetTarget(const char16_t* aTarget)
257 : {
258 0 : mTarget.Assign(aTarget);
259 0 : return NS_OK;
260 : }
261 :
262 : NS_IMETHODIMP
263 6 : nsDocShellLoadInfo::GetPostDataStream(nsIInputStream** aResult)
264 : {
265 6 : NS_ENSURE_ARG_POINTER(aResult);
266 :
267 6 : *aResult = mPostDataStream;
268 :
269 6 : NS_IF_ADDREF(*aResult);
270 6 : return NS_OK;
271 : }
272 :
273 : NS_IMETHODIMP
274 3 : nsDocShellLoadInfo::SetPostDataStream(nsIInputStream* aStream)
275 : {
276 3 : mPostDataStream = aStream;
277 3 : return NS_OK;
278 : }
279 :
280 : NS_IMETHODIMP
281 6 : nsDocShellLoadInfo::GetHeadersStream(nsIInputStream** aHeadersStream)
282 : {
283 6 : NS_ENSURE_ARG_POINTER(aHeadersStream);
284 6 : *aHeadersStream = mHeadersStream;
285 6 : NS_IF_ADDREF(*aHeadersStream);
286 6 : return NS_OK;
287 : }
288 : NS_IMETHODIMP
289 3 : nsDocShellLoadInfo::SetHeadersStream(nsIInputStream* aHeadersStream)
290 : {
291 3 : mHeadersStream = aHeadersStream;
292 3 : return NS_OK;
293 : }
294 :
295 : NS_IMETHODIMP
296 6 : nsDocShellLoadInfo::GetSendReferrer(bool* aSendReferrer)
297 : {
298 6 : NS_ENSURE_ARG_POINTER(aSendReferrer);
299 :
300 6 : *aSendReferrer = mSendReferrer;
301 6 : return NS_OK;
302 : }
303 :
304 : NS_IMETHODIMP
305 0 : nsDocShellLoadInfo::SetSendReferrer(bool aSendReferrer)
306 : {
307 0 : mSendReferrer = aSendReferrer;
308 0 : return NS_OK;
309 : }
310 :
311 : NS_IMETHODIMP
312 6 : nsDocShellLoadInfo::GetReferrerPolicy(
313 : nsDocShellInfoReferrerPolicy* aReferrerPolicy)
314 : {
315 6 : *aReferrerPolicy = mReferrerPolicy;
316 6 : return NS_OK;
317 : }
318 :
319 : NS_IMETHODIMP
320 5 : nsDocShellLoadInfo::SetReferrerPolicy(
321 : nsDocShellInfoReferrerPolicy aReferrerPolicy)
322 : {
323 5 : mReferrerPolicy = aReferrerPolicy;
324 5 : return NS_OK;
325 : }
326 :
327 : NS_IMETHODIMP
328 6 : nsDocShellLoadInfo::GetIsSrcdocLoad(bool* aIsSrcdocLoad)
329 : {
330 6 : *aIsSrcdocLoad = mIsSrcdocLoad;
331 6 : return NS_OK;
332 : }
333 :
334 : NS_IMETHODIMP
335 6 : nsDocShellLoadInfo::GetSrcdocData(nsAString& aSrcdocData)
336 : {
337 6 : aSrcdocData = mSrcdocData;
338 6 : return NS_OK;
339 : }
340 :
341 : NS_IMETHODIMP
342 0 : nsDocShellLoadInfo::SetSrcdocData(const nsAString& aSrcdocData)
343 : {
344 0 : mSrcdocData = aSrcdocData;
345 0 : mIsSrcdocLoad = true;
346 0 : return NS_OK;
347 : }
348 :
349 : NS_IMETHODIMP
350 6 : nsDocShellLoadInfo::GetSourceDocShell(nsIDocShell** aSourceDocShell)
351 : {
352 6 : MOZ_ASSERT(aSourceDocShell);
353 12 : nsCOMPtr<nsIDocShell> result = mSourceDocShell;
354 6 : result.forget(aSourceDocShell);
355 12 : return NS_OK;
356 : }
357 :
358 : NS_IMETHODIMP
359 0 : nsDocShellLoadInfo::SetSourceDocShell(nsIDocShell* aSourceDocShell)
360 : {
361 0 : mSourceDocShell = aSourceDocShell;
362 0 : return NS_OK;
363 : }
364 :
365 : NS_IMETHODIMP
366 6 : nsDocShellLoadInfo::GetBaseURI(nsIURI** aBaseURI)
367 : {
368 6 : NS_ENSURE_ARG_POINTER(aBaseURI);
369 :
370 6 : *aBaseURI = mBaseURI;
371 6 : NS_IF_ADDREF(*aBaseURI);
372 6 : return NS_OK;
373 : }
374 :
375 : NS_IMETHODIMP
376 3 : nsDocShellLoadInfo::SetBaseURI(nsIURI* aBaseURI)
377 : {
378 3 : mBaseURI = aBaseURI;
379 3 : return NS_OK;
380 : }
|