summaryrefslogtreecommitdiffstats
path: root/netwerk/ipc/NeckoChannelParams.ipdlh
blob: e1438caccb3a768bb8f6135b2b4c6a2a5f2c04cc (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
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set sw=2 ts=8 et tw=80 ft=c: */

/* 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 protocol PHttpChannel;
include protocol PFTPChannel;
include protocol PRtspChannel;
include protocol PSendStream;
include BlobTypes;
include URIParams;
include IPCStream;
include InputStreamParams;
include PBackgroundSharedTypes;

using mozilla::NeckoOriginAttributes from "mozilla/ipc/BackgroundUtils.h";
using struct mozilla::void_t from "ipc/IPCMessageUtils.h";
using RequestHeaderTuples from "mozilla/net/PHttpChannelParams.h";
using struct nsHttpAtom from "nsHttp.h";
using class nsHttpResponseHead from "nsHttpResponseHead.h";

namespace mozilla {
namespace net {

//-----------------------------------------------------------------------------
// LoadInfo IPDL structs
//-----------------------------------------------------------------------------

struct LoadInfoArgs
{
  OptionalPrincipalInfo requestingPrincipalInfo;
  PrincipalInfo         triggeringPrincipalInfo;
  OptionalPrincipalInfo principalToInheritInfo;
  uint32_t              securityFlags;
  uint32_t              contentPolicyType;
  uint32_t              tainting;
  bool                  upgradeInsecureRequests;
  bool                  verifySignedContent;
  bool                  enforceSRI;
  bool                  forceInheritPrincipalDropped;
  uint64_t              innerWindowID;
  uint64_t              outerWindowID;
  uint64_t              parentOuterWindowID;
  uint64_t              frameOuterWindowID;
  bool                  enforceSecurity;
  bool                  initialSecurityCheckDone;
  bool                  isInThirdPartyContext;
  NeckoOriginAttributes originAttributes;
  PrincipalInfo[]       redirectChainIncludingInternalRedirects;
  PrincipalInfo[]       redirectChain;
  nsCString[]           corsUnsafeHeaders;
  bool                  forcePreflight;
  bool                  isPreflight;
  bool                  loadTriggeredFromExternal;
  bool                  forceHSTSPriming;
  bool                  mixedContentWouldBlock;
};

/**
 * Not every channel necessarily has a loadInfo attached.
 */
union OptionalLoadInfoArgs
{
  void_t;
  LoadInfoArgs;
};

//-----------------------------------------------------------------------------
// HTTP IPDL structs
//-----------------------------------------------------------------------------

union OptionalHttpResponseHead
{
  void_t;
  nsHttpResponseHead;
};

struct CorsPreflightArgs
{
  nsCString[]   unsafeHeaders;
};

union OptionalCorsPreflightArgs
{
  void_t;
  CorsPreflightArgs;
};

struct HttpChannelOpenArgs
{
  URIParams                   uri;
  // - TODO: bug 571161: unclear if any HTTP channel clients ever
  // set originalURI != uri (about:credits?); also not clear if
  // chrome channel would ever need to know.  Get rid of next arg?
  OptionalURIParams           original;
  OptionalURIParams           doc;
  OptionalURIParams           referrer;
  uint32_t                    referrerPolicy;
  OptionalURIParams           apiRedirectTo;
  OptionalURIParams           topWindowURI;
  uint32_t                    loadFlags;
  RequestHeaderTuples         requestHeaders;
  nsCString                   requestMethod;
  OptionalIPCStream           uploadStream;
  bool                        uploadStreamHasHeaders;
  uint16_t                    priority;
  uint32_t                    classOfService;
  uint8_t                     redirectionLimit;
  bool                        allowPipelining;
  bool                        allowSTS;
  uint32_t                    thirdPartyFlags;
  bool                        resumeAt;
  uint64_t                    startPos;
  nsCString                   entityID;
  bool                        chooseApplicationCache;
  nsCString                   appCacheClientID;
  bool                        allowSpdy;
  bool                        allowAltSvc;
  bool                        beConservative;
  OptionalLoadInfoArgs        loadInfo;
  OptionalHttpResponseHead    synthesizedResponseHead;
  nsCString                   synthesizedSecurityInfoSerialization;
  uint32_t                    cacheKey;
  nsCString                   requestContextID;
  OptionalCorsPreflightArgs   preflightArgs;
  uint32_t                    initialRwin;
  bool                        blockAuthPrompt;
  bool                        suspendAfterSynthesizeResponse;
  bool                        allowStaleCacheContent;
  nsCString                   contentTypeHint;
  nsCString                   channelId;
  uint64_t                    contentWindowId;
  nsCString                   preferredAlternativeType;
};

struct HttpChannelConnectArgs
{
  uint32_t registrarId;
  bool shouldIntercept;
};

union HttpChannelCreationArgs
{
  HttpChannelOpenArgs;      // For AsyncOpen: the common case.
  HttpChannelConnectArgs;   // Used for redirected-to channels
};

//-----------------------------------------------------------------------------
// FTP IPDL structs
//-----------------------------------------------------------------------------

struct FTPChannelOpenArgs
{
  URIParams                 uri;
  uint64_t                  startPos;
  nsCString                 entityID;
  OptionalInputStreamParams uploadStream;
  OptionalLoadInfoArgs      loadInfo;
};

struct FTPChannelConnectArgs
{
  uint32_t channelId;
};

union FTPChannelCreationArgs
{
  FTPChannelOpenArgs;      // For AsyncOpen: the common case.
  FTPChannelConnectArgs;   // Used for redirected-to channels
};

struct HttpChannelDiverterArgs
{
  PHttpChannel mChannel;
  bool mApplyConversion;
};

union ChannelDiverterArgs
{
  HttpChannelDiverterArgs;
  PFTPChannel;
};

//-----------------------------------------------------------------------------
// RTSP IPDL structs
//-----------------------------------------------------------------------------

struct RtspChannelConnectArgs
{
  URIParams uri;
  uint32_t channelId;
};

} // namespace ipc
} // namespace mozilla