This repository has been archived by the owner on Aug 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathBackgroundUtils.h
156 lines (128 loc) · 4.39 KB
/
BackgroundUtils.h
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
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef mozilla_ipc_backgroundutils_h__
#define mozilla_ipc_backgroundutils_h__
#include "ipc/IPCMessageUtils.h"
#include "mozilla/Attributes.h"
#include "mozilla/BasePrincipal.h"
#include "nsCOMPtr.h"
#include "nscore.h"
class nsILoadInfo;
class nsIPrincipal;
class nsIRedirectHistoryEntry;
namespace IPC {
namespace detail {
template <class ParamType>
struct OriginAttributesParamTraits {
typedef ParamType paramType;
static void Write(Message* aMsg, const paramType& aParam) {
nsAutoCString suffix;
aParam.CreateSuffix(suffix);
WriteParam(aMsg, suffix);
}
static bool Read(const Message* aMsg, PickleIterator* aIter,
paramType* aResult) {
nsAutoCString suffix;
return ReadParam(aMsg, aIter, &suffix) &&
aResult->PopulateFromSuffix(suffix);
}
};
} // namespace detail
template <>
struct ParamTraits<mozilla::OriginAttributes>
: public detail::OriginAttributesParamTraits<mozilla::OriginAttributes> {};
} // namespace IPC
namespace mozilla {
namespace net {
class ChildLoadInfoForwarderArgs;
class LoadInfoArgs;
class ParentLoadInfoForwarderArgs;
class RedirectHistoryEntryInfo;
} // namespace net
namespace ipc {
class ContentSecurityPolicy;
class PrincipalInfo;
/**
* Convert a PrincipalInfo to an nsIPrincipal.
*
* MUST be called on the main thread only.
*/
already_AddRefed<nsIPrincipal> PrincipalInfoToPrincipal(
const PrincipalInfo& aPrincipalInfo, nsresult* aOptionalResult = nullptr);
/**
* Populate an array of ContentSecurityPolicy objects from a CSP object.
*
* MUST be called on the main thread only.
*/
nsresult PopulateContentSecurityPolicies(
nsIContentSecurityPolicy* aCSP, nsTArray<ContentSecurityPolicy>& aPolicies);
/**
* Convert an nsIPrincipal to a PrincipalInfo.
*
* MUST be called on the main thread only.
*/
nsresult PrincipalToPrincipalInfo(nsIPrincipal* aPrincipal,
PrincipalInfo* aPrincipalInfo,
bool aSkipBaseDomain = false);
/**
* Return true if this PrincipalInfo is a content principal and it has
* a privateBrowsing id in its OriginAttributes
*/
bool IsPincipalInfoPrivate(const PrincipalInfo& aPrincipalInfo);
/**
* Convert an RedirectHistoryEntryInfo to a nsIRedirectHistoryEntry.
*/
already_AddRefed<nsIRedirectHistoryEntry> RHEntryInfoToRHEntry(
const mozilla::net::RedirectHistoryEntryInfo& aRHEntryInfo);
/**
* Convert an nsIRedirectHistoryEntry to a RedirectHistoryEntryInfo.
*/
nsresult RHEntryToRHEntryInfo(
nsIRedirectHistoryEntry* aRHEntry,
mozilla::net::RedirectHistoryEntryInfo* aRHEntryInfo);
/**
* Convert a LoadInfo to LoadInfoArgs struct.
*/
nsresult LoadInfoToLoadInfoArgs(
nsILoadInfo* aLoadInfo,
Maybe<mozilla::net::LoadInfoArgs>* outOptionalLoadInfoArgs);
/**
* Convert LoadInfoArgs to a LoadInfo.
*/
nsresult LoadInfoArgsToLoadInfo(
const Maybe<mozilla::net::LoadInfoArgs>& aOptionalLoadInfoArgs,
nsILoadInfo** outLoadInfo);
/**
* Fills ParentLoadInfoForwarderArgs with properties we want to carry to child
* processes.
*/
void LoadInfoToParentLoadInfoForwarder(
nsILoadInfo* aLoadInfo,
mozilla::net::ParentLoadInfoForwarderArgs* aForwarderArgsOut);
/**
* Merges (replaces) properties of an existing LoadInfo on a child process
* with properties carried down through ParentLoadInfoForwarderArgs.
*/
nsresult MergeParentLoadInfoForwarder(
mozilla::net::ParentLoadInfoForwarderArgs const& aForwarderArgs,
nsILoadInfo* aLoadInfo);
/**
* Fills ChildLoadInfoForwarderArgs with properties we want to carry to the
* parent process after the initial channel creation.
*/
void LoadInfoToChildLoadInfoForwarder(
nsILoadInfo* aLoadInfo,
mozilla::net::ChildLoadInfoForwarderArgs* aForwarderArgsOut);
/**
* Merges (replaces) properties of an existing LoadInfo on the parent process
* with properties contained in a ChildLoadInfoForwarderArgs.
*/
nsresult MergeChildLoadInfoForwarder(
const mozilla::net::ChildLoadInfoForwarderArgs& aForwardArgs,
nsILoadInfo* aLoadInfo);
} // namespace ipc
} // namespace mozilla
#endif // mozilla_ipc_backgroundutils_h__