forked from Floorp-Projects/Floorp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDOMTypes.ipdlh
400 lines (349 loc) · 10.3 KB
/
DOMTypes.ipdlh
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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 "mozilla/GfxMessageUtils.h";
include "mozilla/dom/CSPMessageUtils.h";
include "mozilla/dom/DocShellMessageUtils.h";
include "mozilla/dom/PermissionMessageUtils.h";
include "mozilla/dom/PropertyBagUtils.h";
include "mozilla/dom/ReferrerInfoUtils.h";
include "mozilla/dom/TabMessageUtils.h";
include "mozilla/ipc/URIUtils.h";
include "mozilla/layers/LayersMessageUtils.h";
include IPCBlob;
include IPCStream;
include protocol PRemoteLazyInputStream;
include ProtocolTypes;
using struct mozilla::void_t from "mozilla/ipc/IPCCore.h";
[MoveOnly] using struct mozilla::SerializedStructuredCloneBuffer
from "mozilla/ipc/SerializedStructuredCloneBuffer.h";
using class mozilla::dom::LoadingSessionHistoryInfo
from "mozilla/dom/SessionHistoryEntry.h";
using LayoutDeviceIntRect from "Units.h";
using DesktopIntRect from "Units.h";
using DesktopToLayoutDeviceScale from "Units.h";
using CSSToLayoutDeviceScale from "Units.h";
using CSSRect from "Units.h";
using CSSSize from "Units.h";
using ScreenIntSize from "Units.h";
using mozilla::LayoutDeviceIntPoint from "Units.h";
using nsSizeMode from "nsIWidgetListener.h";
using ScrollbarPreference from "mozilla/ScrollbarPreferences.h";
using hal::ScreenOrientation from "mozilla/HalScreenConfiguration.h";
using mozilla::gfx::SurfaceFormat from "mozilla/gfx/Types.h";
[RefCounted] using class nsIPrincipal from "nsIPrincipal.h";
using mozilla::dom::MaybeDiscardedBrowsingContext from "mozilla/dom/BrowsingContext.h";
[RefCounted] using class nsIURI from "nsIURI.h";
[RefCounted] using class nsIContentSecurityPolicy from "nsIContentSecurityPolicy.h";
[RefCounted] using class nsIInputStream from "mozilla/ipc/IPCStreamUtils.h";
[RefCounted] using class nsIReferrerInfo from "nsIReferrerInfo.h";
[RefCounted] using class nsIVariant from "nsIVariant.h";
using class mozilla::TimeStamp from "mozilla/TimeStamp.h";
[RefCounted] using class mozilla::dom::BrowsingContext from "mozilla/dom/BrowsingContext.h";
namespace mozilla {
namespace dom {
struct MessagePortIdentifier
{
nsID uuid;
nsID destinationUuid;
uint32_t sequenceId;
bool neutered;
};
/**
* Cross-process representation for postMessage() style payloads where Blobs may
* be referenced/"cloned" and (optionally) messageports transferred. Use
* StructuredCloneData in your code to convert between this wire representation
* and the StructuredCloneData StructuredCloneHolder-subclass.
*/
struct ClonedMessageData
{
SerializedStructuredCloneBuffer data;
IPCBlob[] blobs;
IPCStream[] inputStreams;
MessagePortIdentifier[] identifiers;
};
struct ErrorMessageData {
};
union ClonedOrErrorMessageData {
ClonedMessageData;
ErrorMessageData;
};
struct RefMessageData {
nsID uuid;
};
union MessageDataType {
ClonedMessageData;
RefMessageData;
};
struct MessageData {
nsID? agentClusterId;
MessageDataType data;
};
union IPCDataTransferData
{
nsString; // text
Shmem; // images using Shmem
IPCBlob; // files
};
struct IPCDataTransferImage
{
uint32_t width;
uint32_t height;
uint32_t stride;
SurfaceFormat format;
};
struct IPCDataTransferItem
{
nsCString flavor;
// The image details are only used when transferring images.
IPCDataTransferImage imageDetails;
IPCDataTransferData data;
};
struct IPCDataTransfer
{
IPCDataTransferItem[] items;
};
struct ScreenDetails {
LayoutDeviceIntRect rect;
DesktopIntRect rectDisplayPix;
LayoutDeviceIntRect availRect;
DesktopIntRect availRectDisplayPix;
int32_t pixelDepth;
int32_t colorDepth;
DesktopToLayoutDeviceScale contentsScaleFactor;
CSSToLayoutDeviceScale defaultCSSScaleFactor;
float dpi;
};
struct DimensionInfo
{
CSSRect rect;
CSSSize size;
ScreenOrientation orientation;
LayoutDeviceIntPoint clientOffset;
LayoutDeviceIntPoint chromeOffset;
};
struct FrameScriptInfo
{
nsString url;
bool runInGlobalScope;
};
struct FeaturePolicyInfo
{
nsString[] inheritedDeniedFeatureNames;
nsString[] attributeEnabledFeatureNames;
nsString declaredString;
nsIPrincipal defaultOrigin;
nsIPrincipal selfOrigin;
nsIPrincipal srcOrigin;
};
/**
* The information required to complete a window creation request.
*/
struct CreatedWindowInfo
{
nsresult rv;
bool windowOpened;
FrameScriptInfo[] frameScripts;
uint32_t maxTouchPoints;
DimensionInfo dimensions;
bool hasSiblings;
};
/**
* PerformanceInfo is used to pass performance info stored
* in WorkerPrivate and DocGroup instances, as well as
* memory-related information.
*
* Each (host, pid, windowId) is unique to a given DocGroup or
* Worker, and we collect the number of dispatches per Dispatch
* category and total execution duration as well as the current
* Zone JS Heap usage.
*
* This IPDL struct reflects the data collected in Performance counters,
* in addition of some memory usage information.
*
* see xpcom/threads/PerformanceCounter.h
*/
struct MediaMemoryInfo {
uint64_t audioSize;
uint64_t videoSize;
uint64_t resourcesSize;
};
struct PerformanceMemoryInfo {
MediaMemoryInfo media;
uint64_t domDom;
uint64_t domStyle;
uint64_t domOther;
uint64_t GCHeapUsage;
};
struct CategoryDispatch
{
// DispatchCategory value
uint16_t category;
// Number of dispatch
uint16_t count;
};
struct PerformanceInfo
{
// Host of the document, if any
nsCString host;
// process id
uint32_t pid;
// window id
uint64_t windowId;
// Execution time in microseconds
uint64_t duration;
// Counter ID (unique across processes)
uint64_t counterId;
// True if the data is collected in a worker
bool isWorker;
// True if the document window is the top window
bool isTopLevel;
// Memory
PerformanceMemoryInfo memory;
// Counters per category. For workers, a single entry
CategoryDispatch[] items;
};
struct DocShellLoadStateInit
{
nsIURI URI;
nsIURI OriginalURI;
nsIURI ResultPrincipalURI;
bool ResultPrincipalURIIsSome;
nsIPrincipal TriggeringPrincipal;
nsIReferrerInfo ReferrerInfo;
bool KeepResultPrincipalURIIfSet;
bool LoadReplace;
bool InheritPrincipal;
bool PrincipalIsExplicit;
nsIPrincipal PrincipalToInherit;
nsIPrincipal PartitionedPrincipalToInherit;
bool ForceAllowDataURI;
bool IsExemptFromHTTPSOnlyMode;
bool OriginalFrameSrc;
bool IsFormSubmission;
uint32_t LoadType;
nsString Target;
nsIURI BaseURI;
uint32_t LoadFlags;
uint32_t InternalLoadFlags;
bool FirstParty;
bool HasValidUserGestureActivation;
bool AllowFocusMove;
nsCString TypeHint;
nsString FileName;
bool IsFromProcessingFrameAttributes;
// The Content Security Policy of the load, that is, the CSP of the entity
// responsible for causing the load to occur. Most likely this is the CSP
// of the document that started the load. In case the entity starting the
// load did not use a CSP, then Csp can be null. Please note that this is
// also the CSP that will be applied to the load in case the load
// encounters a server side redirect.
nsIContentSecurityPolicy Csp;
MaybeDiscardedBrowsingContext SourceBrowsingContext;
MaybeDiscardedBrowsingContext TargetBrowsingContext;
// The TriggineringSandboxFlags are the SandboxFlags of the entity
// responsible for causing the load to occur.
uint32_t TriggeringSandboxFlags;
nsCString? OriginalURIString;
int32_t? CancelContentJSEpoch;
nsIInputStream PostDataStream;
nsIInputStream HeadersStream;
nsString SrcdocData; // useless without sourcedocshell
// Fields missing due to lack of need or serialization
// nsCOMPtr<nsIDocShell> mSourceDocShell;
// bool mIsSrcDocLoad; // useless without sourcedocshell
// nsIChannel pendingRedirectedChannel; // sent through other mechanism
uint64_t LoadIdentifier;
bool ChannelInitialized;
bool TryToReplaceWithSessionHistoryLoad;
LoadingSessionHistoryInfo? loadingSessionHistoryInfo;
bool IsMetaRefresh;
};
struct TimedChannelInfo
{
bool timingEnabled;
int8_t redirectCount;
int8_t internalRedirectCount;
TimeStamp asyncOpen;
TimeStamp channelCreation;
TimeStamp redirectStart;
TimeStamp redirectEnd;
nsString initiatorType;
bool allRedirectsSameOrigin;
bool allRedirectsPassTimingAllowCheck;
bool? timingAllowCheckForPrincipal;
TimeStamp launchServiceWorkerStart;
TimeStamp launchServiceWorkerEnd;
TimeStamp dispatchFetchEventStart;
TimeStamp dispatchFetchEventEnd;
TimeStamp handleFetchEventStart;
TimeStamp handleFetchEventEnd;
TimeStamp responseStart;
TimeStamp responseEnd;
};
struct ReplacementChannelConfigInit
{
uint32_t redirectFlags;
uint32_t classOfService;
bool? privateBrowsing;
nsCString? method;
nsIReferrerInfo referrerInfo;
TimedChannelInfo? timedChannel;
nullable PRemoteLazyInputStream uploadStream;
bool uploadStreamHasHeaders;
nsCString? contentType;
nsCString? contentLength;
};
union IPDLVariantValue
{
bool;
uint8_t; // In practice, uint8_t and uint16_t are likely unneeded,
int16_t; // as signed->unsigned->signed has universal behavior.
uint16_t; // but those conversions are only guaranteed in C++20.
int32_t;
uint32_t;
float;
double;
nsID;
nsString;
nsCString;
nsIURI;
nsIPrincipal;
};
struct IDPLVariant
{
uint32_t type; // We explicitly store the original nsIVariant type so that
// the conversion back into a nsVariant later is lossless.
IPDLVariantValue data;
};
struct IPDLProperty
{
nsString name;
nsIVariant value;
};
// Struct with information to show a frame from the parent process.
struct ParentShowInfo
{
nsString name;
bool fakeShowInfo;
bool isTransparent;
float dpi;
int32_t widgetRounding;
double defaultScale;
};
// Struct with information to show an iframe from the process that owns the
// frame.
struct OwnerShowInfo {
// This can be an IntSize rather than a Rect because content processes always
// render to a virtual <0, 0> top-left point.
ScreenIntSize size;
// TODO(emilio): Margin preferences go here.
ScrollbarPreference scrollbarPreference;
// TODO(emilio): I think we should really be able to figure this out from the
// parent process too instead.
nsSizeMode sizeMode;
};
} // namespace dom
} // namespace mozilla