netwerk/base/src/LoadContextInfo.cpp

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:d572192c13d9
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 #include "LoadContextInfo.h"
6
7 #include "nsNetUtil.h"
8 #include "nsIChannel.h"
9 #include "nsILoadContext.h"
10
11 namespace mozilla {
12 namespace net {
13
14 NS_IMPL_ISUPPORTS(LoadContextInfo, nsILoadContextInfo)
15
16 LoadContextInfo::LoadContextInfo(bool aIsPrivate, uint32_t aAppId, bool aIsInBrowser, bool aIsAnonymous)
17 : mAppId(aAppId)
18 , mIsPrivate(aIsPrivate)
19 , mIsInBrowser(aIsInBrowser)
20 , mIsAnonymous(aIsAnonymous)
21 {
22 }
23
24 LoadContextInfo::~LoadContextInfo()
25 {
26 }
27
28 NS_IMETHODIMP LoadContextInfo::GetIsPrivate(bool *aIsPrivate)
29 {
30 *aIsPrivate = mIsPrivate;
31 return NS_OK;
32 }
33
34 NS_IMETHODIMP LoadContextInfo::GetAppId(uint32_t *aAppId)
35 {
36 *aAppId = mAppId;
37 return NS_OK;
38 }
39
40 NS_IMETHODIMP LoadContextInfo::GetIsInBrowserElement(bool *aIsInBrowser)
41 {
42 *aIsInBrowser = mIsInBrowser;
43 return NS_OK;
44 }
45
46 NS_IMETHODIMP LoadContextInfo::GetIsAnonymous(bool *aIsAnonymous)
47 {
48 *aIsAnonymous = mIsAnonymous;
49 return NS_OK;
50 }
51
52 LoadContextInfo *
53 GetLoadContextInfo(nsIChannel * aChannel)
54 {
55 bool pb = NS_UsePrivateBrowsing(aChannel);
56 uint32_t appId;
57 bool ib;
58 if (!NS_GetAppInfo(aChannel, &appId, &ib)) {
59 appId = nsILoadContextInfo::NO_APP_ID;
60 ib = false;
61 }
62
63 bool anon = false;
64 nsLoadFlags loadFlags;
65 nsresult rv = aChannel->GetLoadFlags(&loadFlags);
66 if (NS_SUCCEEDED(rv))
67 anon = !!(loadFlags & nsIChannel::LOAD_ANONYMOUS);
68
69 return new LoadContextInfo(pb, appId, ib, anon);
70 }
71
72 LoadContextInfo *
73 GetLoadContextInfo(nsILoadContext * aLoadContext, bool aIsAnonymous)
74 {
75 if (!aLoadContext)
76 return new LoadContextInfo(false, nsILoadContextInfo::NO_APP_ID, false, aIsAnonymous); // nullptr?
77
78 bool pb = aLoadContext->UsePrivateBrowsing();
79
80 bool ib;
81 nsresult rv = aLoadContext->GetIsInBrowserElement(&ib);
82 if (NS_FAILED(rv))
83 ib = false; // todo NS_WARNING...
84
85 uint32_t appId;
86 rv = aLoadContext->GetAppId(&appId);
87 if (NS_FAILED(rv))
88 appId = nsILoadContextInfo::NO_APP_ID;
89
90 return new LoadContextInfo(pb, appId, ib, aIsAnonymous);
91 }
92
93 LoadContextInfo *
94 GetLoadContextInfo(nsILoadContextInfo* aInfo)
95 {
96 return new LoadContextInfo(aInfo->IsPrivate(),
97 aInfo->AppId(),
98 aInfo->IsInBrowserElement(),
99 aInfo->IsAnonymous());
100 }
101
102 LoadContextInfo *
103 GetLoadContextInfo(bool const aIsPrivate,
104 uint32_t const aAppId,
105 bool const aIsInBrowserElement,
106 bool const aIsAnonymous)
107 {
108 return new LoadContextInfo(aIsPrivate,
109 aAppId,
110 aIsInBrowserElement,
111 aIsAnonymous);
112 }
113
114 } // net
115 } // mozilla

mercurial