Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/ipc/ipdl/PCompositorBridgeChild.cpp
Line
Count
Source (jump to first uncovered line)
1
//
2
// Automatically generated by ipdlc.
3
// Edit at your own risk
4
//
5
6
7
#include "mozilla/layers/PCompositorBridgeChild.h"
8
#include "FrameMetrics.h"
9
#include "ipc/IPCMessageUtils.h"
10
#include "mozilla/TimeStamp.h"
11
#include "mozilla/layers/CompositorTypes.h"
12
#include "mozilla/layers/FrameUniformityData.h"
13
#include "mozilla/layers/LayersTypes.h"
14
15
#include "mozilla/layers/PAPZChild.h"
16
#include "mozilla/layers/PAPZCTreeManagerChild.h"
17
#include "mozilla/dom/PBrowserChild.h"
18
#include "mozilla/layers/PCompositorManagerChild.h"
19
#include "mozilla/widget/PCompositorWidgetChild.h"
20
#include "mozilla/layers/PLayerTransactionChild.h"
21
#include "mozilla/layers/PTextureChild.h"
22
#include "mozilla/layers/PWebRenderBridgeChild.h"
23
24
#include "nsIFile.h"
25
#include "GeckoProfiler.h"
26
27
namespace mozilla {
28
namespace layers {
29
30
31
auto PCompositorBridgeChild::ActorDestroy(ActorDestroyReason aWhy) -> void
32
0
{
33
0
}
34
35
MOZ_IMPLICIT PCompositorBridgeChild::PCompositorBridgeChild() :
36
    mozilla::ipc::IProtocol(mozilla::ipc::ChildSide),
37
    mLivenessState(mozilla::ipc::LivenessState::Dead)
38
0
{
39
0
    MOZ_COUNT_CTOR(PCompositorBridgeChild);
40
0
}
41
42
PCompositorBridgeChild::~PCompositorBridgeChild()
43
0
{
44
0
    MOZ_COUNT_DTOR(PCompositorBridgeChild);
45
0
}
46
47
auto PCompositorBridgeChild::Manager() const -> PCompositorManagerChild*
48
0
{
49
0
    return static_cast<PCompositorManagerChild*>(IProtocol::Manager());
50
0
}
51
52
auto PCompositorBridgeChild::ManagedPAPZChild(nsTArray<PAPZChild*>& aArr) const -> void
53
0
{
54
0
    (mManagedPAPZChild).ToArray(aArr);
55
0
}
56
57
auto PCompositorBridgeChild::ManagedPAPZChild() const -> const ManagedContainer<PAPZChild>&
58
0
{
59
0
    return mManagedPAPZChild;
60
0
}
61
62
auto PCompositorBridgeChild::ManagedPAPZCTreeManagerChild(nsTArray<PAPZCTreeManagerChild*>& aArr) const -> void
63
0
{
64
0
    (mManagedPAPZCTreeManagerChild).ToArray(aArr);
65
0
}
66
67
auto PCompositorBridgeChild::ManagedPAPZCTreeManagerChild() const -> const ManagedContainer<PAPZCTreeManagerChild>&
68
0
{
69
0
    return mManagedPAPZCTreeManagerChild;
70
0
}
71
72
auto PCompositorBridgeChild::ManagedPLayerTransactionChild(nsTArray<PLayerTransactionChild*>& aArr) const -> void
73
0
{
74
0
    (mManagedPLayerTransactionChild).ToArray(aArr);
75
0
}
76
77
auto PCompositorBridgeChild::ManagedPLayerTransactionChild() const -> const ManagedContainer<PLayerTransactionChild>&
78
0
{
79
0
    return mManagedPLayerTransactionChild;
80
0
}
81
82
auto PCompositorBridgeChild::ManagedPTextureChild(nsTArray<PTextureChild*>& aArr) const -> void
83
0
{
84
0
    (mManagedPTextureChild).ToArray(aArr);
85
0
}
86
87
auto PCompositorBridgeChild::ManagedPTextureChild() const -> const ManagedContainer<PTextureChild>&
88
0
{
89
0
    return mManagedPTextureChild;
90
0
}
91
92
auto PCompositorBridgeChild::ManagedPCompositorWidgetChild(nsTArray<PCompositorWidgetChild*>& aArr) const -> void
93
0
{
94
0
    (mManagedPCompositorWidgetChild).ToArray(aArr);
95
0
}
96
97
auto PCompositorBridgeChild::ManagedPCompositorWidgetChild() const -> const ManagedContainer<PCompositorWidgetChild>&
98
0
{
99
0
    return mManagedPCompositorWidgetChild;
100
0
}
101
102
auto PCompositorBridgeChild::ManagedPWebRenderBridgeChild(nsTArray<PWebRenderBridgeChild*>& aArr) const -> void
103
0
{
104
0
    (mManagedPWebRenderBridgeChild).ToArray(aArr);
105
0
}
106
107
auto PCompositorBridgeChild::ManagedPWebRenderBridgeChild() const -> const ManagedContainer<PWebRenderBridgeChild>&
108
0
{
109
0
    return mManagedPWebRenderBridgeChild;
110
0
}
111
112
auto PCompositorBridgeChild::Send__delete__(PCompositorBridgeChild* actor) -> bool
113
0
{
114
0
    if ((!(actor))) {
115
0
        return false;
116
0
    }
117
0
118
0
    IPC::Message* msg__ = PCompositorBridge::Msg___delete__((actor)->Id());
119
0
120
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
121
0
    WriteIPDLParam(msg__, actor, actor);
122
0
    // Sentinel = 'actor'
123
0
    (msg__)->WriteSentinel(875202478);
124
0
125
0
126
0
127
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
128
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", (actor)->OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
129
0
    }
130
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg___delete__", OTHER);
131
0
    if ((!(StateTransition(true, (&((actor)->mLivenessState)))))) {
132
0
        mozilla::ipc::LogicError("Transition error");
133
0
    }
134
0
135
0
    bool sendok__ = ((actor)->GetIPCChannel())->Send(msg__);
136
0
137
0
    IProtocol* mgr = (actor)->Manager();
138
0
    (actor)->DestroySubtree(Deletion);
139
0
    (actor)->DeallocSubtree();
140
0
    (mgr)->RemoveManagee(PCompositorBridgeMsgStart, actor);
141
0
    return sendok__;
142
0
}
143
144
auto PCompositorBridgeChild::SendPCompositorWidgetConstructor(const CompositorWidgetInitData& aInitData) -> PCompositorWidgetChild*
145
0
{
146
0
    return SendPCompositorWidgetConstructor(AllocPCompositorWidgetChild(aInitData), aInitData);
147
0
}
148
149
auto PCompositorBridgeChild::SendPCompositorWidgetConstructor(
150
        PCompositorWidgetChild* actor,
151
        const CompositorWidgetInitData& aInitData) -> PCompositorWidgetChild*
152
0
{
153
0
    if ((!(actor))) {
154
0
        NS_WARNING("Error constructing actor PCompositorWidgetChild");
155
0
        return nullptr;
156
0
    }
157
0
    (actor)->SetManagerAndRegister(this);
158
0
    (mManagedPCompositorWidgetChild).PutEntry(actor);
159
0
    (actor)->mLivenessState = mozilla::ipc::LivenessState::Start;
160
0
161
0
    IPC::Message* msg__ = PCompositorBridge::Msg_PCompositorWidgetConstructor(Id());
162
0
163
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
164
0
    WriteIPDLParam(msg__, this, actor);
165
0
    // Sentinel = 'actor'
166
0
    (msg__)->WriteSentinel(875202478);
167
0
    WriteIPDLParam(msg__, this, aInitData);
168
0
    // Sentinel = 'aInitData'
169
0
    (msg__)->WriteSentinel(897514454);
170
0
171
0
172
0
173
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
174
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
175
0
    }
176
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_PCompositorWidgetConstructor", OTHER);
177
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
178
0
        mozilla::ipc::LogicError("Transition error");
179
0
    }
180
0
181
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
182
0
    if ((!(sendok__))) {
183
0
        FatalError("constructor for actor failed");
184
0
        return nullptr;
185
0
    }
186
0
    return actor;
187
0
}
188
189
auto PCompositorBridgeChild::SendInitialize(const LayersId& rootLayerTreeId) -> bool
190
0
{
191
0
    IPC::Message* msg__ = PCompositorBridge::Msg_Initialize(Id());
192
0
193
0
    WriteIPDLParam(msg__, this, rootLayerTreeId);
194
0
    // Sentinel = 'rootLayerTreeId'
195
0
    (msg__)->WriteSentinel(191972583);
196
0
197
0
198
0
199
0
    Message reply__;
200
0
201
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
202
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
203
0
    }
204
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_Initialize", OTHER);
205
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
206
0
        mozilla::ipc::LogicError("Transition error");
207
0
    }
208
0
209
0
    bool sendok__;
210
0
    {
211
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_Initialize");
212
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
213
0
    }
214
0
    if ((!(sendok__))) {
215
0
        return false;
216
0
    }
217
0
218
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
219
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
220
0
    }
221
0
222
0
    return true;
223
0
}
224
225
auto PCompositorBridgeChild::SendPAPZConstructor(const LayersId& layersId) -> PAPZChild*
226
0
{
227
0
    return SendPAPZConstructor(AllocPAPZChild(layersId), layersId);
228
0
}
229
230
auto PCompositorBridgeChild::SendPAPZConstructor(
231
        PAPZChild* actor,
232
        const LayersId& layersId) -> PAPZChild*
233
0
{
234
0
    if ((!(actor))) {
235
0
        NS_WARNING("Error constructing actor PAPZChild");
236
0
        return nullptr;
237
0
    }
238
0
    (actor)->SetManagerAndRegister(this);
239
0
    (mManagedPAPZChild).PutEntry(actor);
240
0
    (actor)->mLivenessState = mozilla::ipc::LivenessState::Start;
241
0
242
0
    IPC::Message* msg__ = PCompositorBridge::Msg_PAPZConstructor(Id());
243
0
244
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
245
0
    WriteIPDLParam(msg__, this, actor);
246
0
    // Sentinel = 'actor'
247
0
    (msg__)->WriteSentinel(875202478);
248
0
    WriteIPDLParam(msg__, this, layersId);
249
0
    // Sentinel = 'layersId'
250
0
    (msg__)->WriteSentinel(2382073245);
251
0
252
0
253
0
254
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
255
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
256
0
    }
257
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_PAPZConstructor", OTHER);
258
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
259
0
        mozilla::ipc::LogicError("Transition error");
260
0
    }
261
0
262
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
263
0
    if ((!(sendok__))) {
264
0
        FatalError("constructor for actor failed");
265
0
        return nullptr;
266
0
    }
267
0
    return actor;
268
0
}
269
270
auto PCompositorBridgeChild::SendPAPZCTreeManagerConstructor(const LayersId& layersId) -> PAPZCTreeManagerChild*
271
0
{
272
0
    return SendPAPZCTreeManagerConstructor(AllocPAPZCTreeManagerChild(layersId), layersId);
273
0
}
274
275
auto PCompositorBridgeChild::SendPAPZCTreeManagerConstructor(
276
        PAPZCTreeManagerChild* actor,
277
        const LayersId& layersId) -> PAPZCTreeManagerChild*
278
0
{
279
0
    if ((!(actor))) {
280
0
        NS_WARNING("Error constructing actor PAPZCTreeManagerChild");
281
0
        return nullptr;
282
0
    }
283
0
    (actor)->SetManagerAndRegister(this);
284
0
    (mManagedPAPZCTreeManagerChild).PutEntry(actor);
285
0
    (actor)->mLivenessState = mozilla::ipc::LivenessState::Start;
286
0
287
0
    IPC::Message* msg__ = PCompositorBridge::Msg_PAPZCTreeManagerConstructor(Id());
288
0
289
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
290
0
    WriteIPDLParam(msg__, this, actor);
291
0
    // Sentinel = 'actor'
292
0
    (msg__)->WriteSentinel(875202478);
293
0
    WriteIPDLParam(msg__, this, layersId);
294
0
    // Sentinel = 'layersId'
295
0
    (msg__)->WriteSentinel(2382073245);
296
0
297
0
298
0
299
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
300
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
301
0
    }
302
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_PAPZCTreeManagerConstructor", OTHER);
303
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
304
0
        mozilla::ipc::LogicError("Transition error");
305
0
    }
306
0
307
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
308
0
    if ((!(sendok__))) {
309
0
        FatalError("constructor for actor failed");
310
0
        return nullptr;
311
0
    }
312
0
    return actor;
313
0
}
314
315
auto PCompositorBridgeChild::SendRemotePluginsReady() -> bool
316
0
{
317
0
    IPC::Message* msg__ = PCompositorBridge::Msg_RemotePluginsReady(Id());
318
0
319
0
320
0
321
0
322
0
323
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
324
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
325
0
    }
326
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_RemotePluginsReady", OTHER);
327
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
328
0
        mozilla::ipc::LogicError("Transition error");
329
0
    }
330
0
331
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
332
0
    return sendok__;
333
0
}
334
335
auto PCompositorBridgeChild::SendGetFrameUniformity(FrameUniformityData* data) -> bool
336
0
{
337
0
    IPC::Message* msg__ = PCompositorBridge::Msg_GetFrameUniformity(Id());
338
0
339
0
340
0
341
0
342
0
    Message reply__;
343
0
344
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
345
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
346
0
    }
347
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_GetFrameUniformity", OTHER);
348
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
349
0
        mozilla::ipc::LogicError("Transition error");
350
0
    }
351
0
352
0
    bool sendok__;
353
0
    {
354
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_GetFrameUniformity");
355
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
356
0
    }
357
0
    if ((!(sendok__))) {
358
0
        return false;
359
0
    }
360
0
361
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
362
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
363
0
    }
364
0
365
0
    PickleIterator iter__(reply__);
366
0
367
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, data)))) {
368
0
        FatalError("Error deserializing 'FrameUniformityData'");
369
0
        return false;
370
0
    }
371
0
    // Sentinel = 'data'
372
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 843352540)))) {
373
0
        mozilla::ipc::SentinelReadError("Error deserializing 'FrameUniformityData'");
374
0
        return false;
375
0
    }
376
0
    (reply__).EndRead(iter__, (reply__).type());
377
0
378
0
    return true;
379
0
}
380
381
auto PCompositorBridgeChild::SendWillClose() -> bool
382
0
{
383
0
    IPC::Message* msg__ = PCompositorBridge::Msg_WillClose(Id());
384
0
385
0
386
0
387
0
388
0
    Message reply__;
389
0
390
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
391
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
392
0
    }
393
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_WillClose", OTHER);
394
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
395
0
        mozilla::ipc::LogicError("Transition error");
396
0
    }
397
0
398
0
    bool sendok__;
399
0
    {
400
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_WillClose");
401
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
402
0
    }
403
0
    if ((!(sendok__))) {
404
0
        return false;
405
0
    }
406
0
407
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
408
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
409
0
    }
410
0
411
0
    return true;
412
0
}
413
414
auto PCompositorBridgeChild::SendPause() -> bool
415
0
{
416
0
    IPC::Message* msg__ = PCompositorBridge::Msg_Pause(Id());
417
0
418
0
419
0
420
0
421
0
    Message reply__;
422
0
423
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
424
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
425
0
    }
426
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_Pause", OTHER);
427
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
428
0
        mozilla::ipc::LogicError("Transition error");
429
0
    }
430
0
431
0
    bool sendok__;
432
0
    {
433
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_Pause");
434
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
435
0
    }
436
0
    if ((!(sendok__))) {
437
0
        return false;
438
0
    }
439
0
440
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
441
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
442
0
    }
443
0
444
0
    return true;
445
0
}
446
447
auto PCompositorBridgeChild::SendResume() -> bool
448
0
{
449
0
    IPC::Message* msg__ = PCompositorBridge::Msg_Resume(Id());
450
0
451
0
452
0
453
0
454
0
    Message reply__;
455
0
456
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
457
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
458
0
    }
459
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_Resume", OTHER);
460
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
461
0
        mozilla::ipc::LogicError("Transition error");
462
0
    }
463
0
464
0
    bool sendok__;
465
0
    {
466
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_Resume");
467
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
468
0
    }
469
0
    if ((!(sendok__))) {
470
0
        return false;
471
0
    }
472
0
473
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
474
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
475
0
    }
476
0
477
0
    return true;
478
0
}
479
480
auto PCompositorBridgeChild::SendNotifyChildCreated(
481
        const LayersId& id,
482
        CompositorOptions* compositorOptions) -> bool
483
0
{
484
0
    IPC::Message* msg__ = PCompositorBridge::Msg_NotifyChildCreated(Id());
485
0
486
0
    WriteIPDLParam(msg__, this, id);
487
0
    // Sentinel = 'id'
488
0
    (msg__)->WriteSentinel(2794505629);
489
0
490
0
491
0
492
0
    Message reply__;
493
0
494
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
495
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
496
0
    }
497
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_NotifyChildCreated", OTHER);
498
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
499
0
        mozilla::ipc::LogicError("Transition error");
500
0
    }
501
0
502
0
    bool sendok__;
503
0
    {
504
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_NotifyChildCreated");
505
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
506
0
    }
507
0
    if ((!(sendok__))) {
508
0
        return false;
509
0
    }
510
0
511
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
512
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
513
0
    }
514
0
515
0
    PickleIterator iter__(reply__);
516
0
517
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, compositorOptions)))) {
518
0
        FatalError("Error deserializing 'CompositorOptions'");
519
0
        return false;
520
0
    }
521
0
    // Sentinel = 'compositorOptions'
522
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 1905928698)))) {
523
0
        mozilla::ipc::SentinelReadError("Error deserializing 'CompositorOptions'");
524
0
        return false;
525
0
    }
526
0
    (reply__).EndRead(iter__, (reply__).type());
527
0
528
0
    return true;
529
0
}
530
531
auto PCompositorBridgeChild::SendMapAndNotifyChildCreated(
532
        const LayersId& id,
533
        const ProcessId& owner,
534
        CompositorOptions* compositorOptions) -> bool
535
0
{
536
0
    IPC::Message* msg__ = PCompositorBridge::Msg_MapAndNotifyChildCreated(Id());
537
0
538
0
    WriteIPDLParam(msg__, this, id);
539
0
    // Sentinel = 'id'
540
0
    (msg__)->WriteSentinel(2794505629);
541
0
    WriteIPDLParam(msg__, this, owner);
542
0
    // Sentinel = 'owner'
543
0
    (msg__)->WriteSentinel(622631704);
544
0
545
0
546
0
547
0
    Message reply__;
548
0
549
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
550
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
551
0
    }
552
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_MapAndNotifyChildCreated", OTHER);
553
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
554
0
        mozilla::ipc::LogicError("Transition error");
555
0
    }
556
0
557
0
    bool sendok__;
558
0
    {
559
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_MapAndNotifyChildCreated");
560
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
561
0
    }
562
0
    if ((!(sendok__))) {
563
0
        return false;
564
0
    }
565
0
566
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
567
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
568
0
    }
569
0
570
0
    PickleIterator iter__(reply__);
571
0
572
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, compositorOptions)))) {
573
0
        FatalError("Error deserializing 'CompositorOptions'");
574
0
        return false;
575
0
    }
576
0
    // Sentinel = 'compositorOptions'
577
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 1905928698)))) {
578
0
        mozilla::ipc::SentinelReadError("Error deserializing 'CompositorOptions'");
579
0
        return false;
580
0
    }
581
0
    (reply__).EndRead(iter__, (reply__).type());
582
0
583
0
    return true;
584
0
}
585
586
auto PCompositorBridgeChild::SendAdoptChild(const LayersId& id) -> bool
587
0
{
588
0
    IPC::Message* msg__ = PCompositorBridge::Msg_AdoptChild(Id());
589
0
590
0
    WriteIPDLParam(msg__, this, id);
591
0
    // Sentinel = 'id'
592
0
    (msg__)->WriteSentinel(2794505629);
593
0
594
0
595
0
596
0
597
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
598
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
599
0
    }
600
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_AdoptChild", OTHER);
601
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
602
0
        mozilla::ipc::LogicError("Transition error");
603
0
    }
604
0
605
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
606
0
    return sendok__;
607
0
}
608
609
auto PCompositorBridgeChild::SendNotifyChildRecreated(
610
        const LayersId& id,
611
        CompositorOptions* compositorOptions) -> bool
612
0
{
613
0
    IPC::Message* msg__ = PCompositorBridge::Msg_NotifyChildRecreated(Id());
614
0
615
0
    WriteIPDLParam(msg__, this, id);
616
0
    // Sentinel = 'id'
617
0
    (msg__)->WriteSentinel(2794505629);
618
0
619
0
620
0
621
0
    Message reply__;
622
0
623
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
624
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
625
0
    }
626
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_NotifyChildRecreated", OTHER);
627
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
628
0
        mozilla::ipc::LogicError("Transition error");
629
0
    }
630
0
631
0
    bool sendok__;
632
0
    {
633
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_NotifyChildRecreated");
634
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
635
0
    }
636
0
    if ((!(sendok__))) {
637
0
        return false;
638
0
    }
639
0
640
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
641
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
642
0
    }
643
0
644
0
    PickleIterator iter__(reply__);
645
0
646
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, compositorOptions)))) {
647
0
        FatalError("Error deserializing 'CompositorOptions'");
648
0
        return false;
649
0
    }
650
0
    // Sentinel = 'compositorOptions'
651
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 1905928698)))) {
652
0
        mozilla::ipc::SentinelReadError("Error deserializing 'CompositorOptions'");
653
0
        return false;
654
0
    }
655
0
    (reply__).EndRead(iter__, (reply__).type());
656
0
657
0
    return true;
658
0
}
659
660
auto PCompositorBridgeChild::SendMakeSnapshot(
661
        const SurfaceDescriptor& inSnapshot,
662
        const IntRect& dirtyRect) -> bool
663
0
{
664
0
    IPC::Message* msg__ = PCompositorBridge::Msg_MakeSnapshot(Id());
665
0
666
0
    WriteIPDLParam(msg__, this, inSnapshot);
667
0
    // Sentinel = 'inSnapshot'
668
0
    (msg__)->WriteSentinel(1570595367);
669
0
    WriteIPDLParam(msg__, this, dirtyRect);
670
0
    // Sentinel = 'dirtyRect'
671
0
    (msg__)->WriteSentinel(1726016483);
672
0
673
0
674
0
675
0
    Message reply__;
676
0
677
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
678
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
679
0
    }
680
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_MakeSnapshot", OTHER);
681
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
682
0
        mozilla::ipc::LogicError("Transition error");
683
0
    }
684
0
685
0
    bool sendok__;
686
0
    {
687
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_MakeSnapshot");
688
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
689
0
    }
690
0
    if ((!(sendok__))) {
691
0
        return false;
692
0
    }
693
0
694
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
695
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
696
0
    }
697
0
698
0
    return true;
699
0
}
700
701
auto PCompositorBridgeChild::SendFlushRendering() -> bool
702
0
{
703
0
    IPC::Message* msg__ = PCompositorBridge::Msg_FlushRendering(Id());
704
0
705
0
706
0
707
0
708
0
    Message reply__;
709
0
710
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
711
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
712
0
    }
713
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_FlushRendering", OTHER);
714
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
715
0
        mozilla::ipc::LogicError("Transition error");
716
0
    }
717
0
718
0
    bool sendok__;
719
0
    {
720
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_FlushRendering");
721
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
722
0
    }
723
0
    if ((!(sendok__))) {
724
0
        return false;
725
0
    }
726
0
727
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
728
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
729
0
    }
730
0
731
0
    return true;
732
0
}
733
734
auto PCompositorBridgeChild::SendFlushRenderingAsync() -> bool
735
0
{
736
0
    IPC::Message* msg__ = PCompositorBridge::Msg_FlushRenderingAsync(Id());
737
0
738
0
739
0
740
0
741
0
742
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
743
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
744
0
    }
745
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_FlushRenderingAsync", OTHER);
746
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
747
0
        mozilla::ipc::LogicError("Transition error");
748
0
    }
749
0
750
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
751
0
    return sendok__;
752
0
}
753
754
auto PCompositorBridgeChild::SendWaitOnTransactionProcessed() -> bool
755
0
{
756
0
    IPC::Message* msg__ = PCompositorBridge::Msg_WaitOnTransactionProcessed(Id());
757
0
758
0
759
0
760
0
761
0
    Message reply__;
762
0
763
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
764
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
765
0
    }
766
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_WaitOnTransactionProcessed", OTHER);
767
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
768
0
        mozilla::ipc::LogicError("Transition error");
769
0
    }
770
0
771
0
    bool sendok__;
772
0
    {
773
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_WaitOnTransactionProcessed");
774
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
775
0
    }
776
0
    if ((!(sendok__))) {
777
0
        return false;
778
0
    }
779
0
780
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
781
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
782
0
    }
783
0
784
0
    return true;
785
0
}
786
787
auto PCompositorBridgeChild::SendForcePresent() -> bool
788
0
{
789
0
    IPC::Message* msg__ = PCompositorBridge::Msg_ForcePresent(Id());
790
0
791
0
792
0
793
0
794
0
795
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
796
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
797
0
    }
798
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_ForcePresent", OTHER);
799
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
800
0
        mozilla::ipc::LogicError("Transition error");
801
0
    }
802
0
803
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
804
0
    return sendok__;
805
0
}
806
807
auto PCompositorBridgeChild::SendStartFrameTimeRecording(
808
        const int32_t& bufferSize,
809
        uint32_t* startIndex) -> bool
810
0
{
811
0
    IPC::Message* msg__ = PCompositorBridge::Msg_StartFrameTimeRecording(Id());
812
0
813
0
    WriteIPDLParam(msg__, this, bufferSize);
814
0
    // Sentinel = 'bufferSize'
815
0
    (msg__)->WriteSentinel(3444538779);
816
0
817
0
818
0
819
0
    Message reply__;
820
0
821
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
822
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
823
0
    }
824
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_StartFrameTimeRecording", OTHER);
825
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
826
0
        mozilla::ipc::LogicError("Transition error");
827
0
    }
828
0
829
0
    bool sendok__;
830
0
    {
831
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_StartFrameTimeRecording");
832
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
833
0
    }
834
0
    if ((!(sendok__))) {
835
0
        return false;
836
0
    }
837
0
838
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
839
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
840
0
    }
841
0
842
0
    PickleIterator iter__(reply__);
843
0
844
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, startIndex)))) {
845
0
        FatalError("Error deserializing 'uint32_t'");
846
0
        return false;
847
0
    }
848
0
    // Sentinel = 'startIndex'
849
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 4220530450)))) {
850
0
        mozilla::ipc::SentinelReadError("Error deserializing 'uint32_t'");
851
0
        return false;
852
0
    }
853
0
    (reply__).EndRead(iter__, (reply__).type());
854
0
855
0
    return true;
856
0
}
857
858
auto PCompositorBridgeChild::SendStopFrameTimeRecording(
859
        const uint32_t& startIndex,
860
        nsTArray<float>* intervals) -> bool
861
0
{
862
0
    IPC::Message* msg__ = PCompositorBridge::Msg_StopFrameTimeRecording(Id());
863
0
864
0
    WriteIPDLParam(msg__, this, startIndex);
865
0
    // Sentinel = 'startIndex'
866
0
    (msg__)->WriteSentinel(4220530450);
867
0
868
0
869
0
870
0
    Message reply__;
871
0
872
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
873
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
874
0
    }
875
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_StopFrameTimeRecording", OTHER);
876
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
877
0
        mozilla::ipc::LogicError("Transition error");
878
0
    }
879
0
880
0
    bool sendok__;
881
0
    {
882
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_StopFrameTimeRecording");
883
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
884
0
    }
885
0
    if ((!(sendok__))) {
886
0
        return false;
887
0
    }
888
0
889
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
890
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
891
0
    }
892
0
893
0
    PickleIterator iter__(reply__);
894
0
895
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, intervals)))) {
896
0
        FatalError("Error deserializing 'nsTArray'");
897
0
        return false;
898
0
    }
899
0
    // Sentinel = 'intervals'
900
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 470677011)))) {
901
0
        mozilla::ipc::SentinelReadError("Error deserializing 'nsTArray'");
902
0
        return false;
903
0
    }
904
0
    (reply__).EndRead(iter__, (reply__).type());
905
0
906
0
    return true;
907
0
}
908
909
auto PCompositorBridgeChild::SendPLayerTransactionConstructor(
910
        const nsTArray<LayersBackend>& layersBackendHints,
911
        const LayersId& id) -> PLayerTransactionChild*
912
0
{
913
0
    return SendPLayerTransactionConstructor(AllocPLayerTransactionChild(layersBackendHints, id), layersBackendHints, id);
914
0
}
915
916
auto PCompositorBridgeChild::SendPLayerTransactionConstructor(
917
        PLayerTransactionChild* actor,
918
        const nsTArray<LayersBackend>& layersBackendHints,
919
        const LayersId& id) -> PLayerTransactionChild*
920
0
{
921
0
    if ((!(actor))) {
922
0
        NS_WARNING("Error constructing actor PLayerTransactionChild");
923
0
        return nullptr;
924
0
    }
925
0
    (actor)->SetManagerAndRegister(this);
926
0
    (mManagedPLayerTransactionChild).PutEntry(actor);
927
0
    (actor)->mLivenessState = mozilla::ipc::LivenessState::Start;
928
0
929
0
    IPC::Message* msg__ = PCompositorBridge::Msg_PLayerTransactionConstructor(Id());
930
0
931
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
932
0
    WriteIPDLParam(msg__, this, actor);
933
0
    // Sentinel = 'actor'
934
0
    (msg__)->WriteSentinel(875202478);
935
0
    WriteIPDLParam(msg__, this, layersBackendHints);
936
0
    // Sentinel = 'layersBackendHints'
937
0
    (msg__)->WriteSentinel(3491646450);
938
0
    WriteIPDLParam(msg__, this, id);
939
0
    // Sentinel = 'id'
940
0
    (msg__)->WriteSentinel(2794505629);
941
0
942
0
943
0
944
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
945
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
946
0
    }
947
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_PLayerTransactionConstructor", OTHER);
948
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
949
0
        mozilla::ipc::LogicError("Transition error");
950
0
    }
951
0
952
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
953
0
    if ((!(sendok__))) {
954
0
        FatalError("constructor for actor failed");
955
0
        return nullptr;
956
0
    }
957
0
    return actor;
958
0
}
959
960
auto PCompositorBridgeChild::SendNotifyRegionInvalidated(const nsIntRegion& region) -> bool
961
0
{
962
0
    IPC::Message* msg__ = PCompositorBridge::Msg_NotifyRegionInvalidated(Id());
963
0
964
0
    WriteIPDLParam(msg__, this, region);
965
0
    // Sentinel = 'region'
966
0
    (msg__)->WriteSentinel(688844010);
967
0
968
0
969
0
970
0
971
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
972
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
973
0
    }
974
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_NotifyRegionInvalidated", OTHER);
975
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
976
0
        mozilla::ipc::LogicError("Transition error");
977
0
    }
978
0
979
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
980
0
    return sendok__;
981
0
}
982
983
auto PCompositorBridgeChild::SendRequestNotifyAfterRemotePaint() -> bool
984
0
{
985
0
    IPC::Message* msg__ = PCompositorBridge::Msg_RequestNotifyAfterRemotePaint(Id());
986
0
987
0
988
0
989
0
990
0
991
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
992
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
993
0
    }
994
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_RequestNotifyAfterRemotePaint", OTHER);
995
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
996
0
        mozilla::ipc::LogicError("Transition error");
997
0
    }
998
0
999
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
1000
0
    return sendok__;
1001
0
}
1002
1003
auto PCompositorBridgeChild::SendAllPluginsCaptured() -> bool
1004
0
{
1005
0
    IPC::Message* msg__ = PCompositorBridge::Msg_AllPluginsCaptured(Id());
1006
0
1007
0
1008
0
1009
0
1010
0
1011
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1012
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
1013
0
    }
1014
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_AllPluginsCaptured", OTHER);
1015
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
1016
0
        mozilla::ipc::LogicError("Transition error");
1017
0
    }
1018
0
1019
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
1020
0
    return sendok__;
1021
0
}
1022
1023
auto PCompositorBridgeChild::SendPTextureConstructor(
1024
        const SurfaceDescriptor& aSharedData,
1025
        const ReadLockDescriptor& aReadLock,
1026
        const LayersBackend& aBackend,
1027
        const TextureFlags& aTextureFlags,
1028
        const LayersId& id,
1029
        const uint64_t& aSerial,
1030
        const MaybeExternalImageId& aExternalImageId) -> PTextureChild*
1031
0
{
1032
0
    return SendPTextureConstructor(AllocPTextureChild(aSharedData, aReadLock, aBackend, aTextureFlags, id, aSerial, aExternalImageId), aSharedData, aReadLock, aBackend, aTextureFlags, id, aSerial, aExternalImageId);
1033
0
}
1034
1035
auto PCompositorBridgeChild::SendPTextureConstructor(
1036
        PTextureChild* actor,
1037
        const SurfaceDescriptor& aSharedData,
1038
        const ReadLockDescriptor& aReadLock,
1039
        const LayersBackend& aBackend,
1040
        const TextureFlags& aTextureFlags,
1041
        const LayersId& id,
1042
        const uint64_t& aSerial,
1043
        const MaybeExternalImageId& aExternalImageId) -> PTextureChild*
1044
0
{
1045
0
    if ((!(actor))) {
1046
0
        NS_WARNING("Error constructing actor PTextureChild");
1047
0
        return nullptr;
1048
0
    }
1049
0
    (actor)->SetManagerAndRegister(this);
1050
0
    (mManagedPTextureChild).PutEntry(actor);
1051
0
    (actor)->mLivenessState = mozilla::ipc::LivenessState::Start;
1052
0
1053
0
    IPC::Message* msg__ = PCompositorBridge::Msg_PTextureConstructor(Id());
1054
0
1055
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
1056
0
    WriteIPDLParam(msg__, this, actor);
1057
0
    // Sentinel = 'actor'
1058
0
    (msg__)->WriteSentinel(875202478);
1059
0
    WriteIPDLParam(msg__, this, aSharedData);
1060
0
    // Sentinel = 'aSharedData'
1061
0
    (msg__)->WriteSentinel(3013593029);
1062
0
    WriteIPDLParam(msg__, this, aReadLock);
1063
0
    // Sentinel = 'aReadLock'
1064
0
    (msg__)->WriteSentinel(1208527801);
1065
0
    WriteIPDLParam(msg__, this, aBackend);
1066
0
    // Sentinel = 'aBackend'
1067
0
    (msg__)->WriteSentinel(2878499283);
1068
0
    WriteIPDLParam(msg__, this, aTextureFlags);
1069
0
    // Sentinel = 'aTextureFlags'
1070
0
    (msg__)->WriteSentinel(3005687826);
1071
0
    WriteIPDLParam(msg__, this, id);
1072
0
    // Sentinel = 'id'
1073
0
    (msg__)->WriteSentinel(2794505629);
1074
0
    WriteIPDLParam(msg__, this, aSerial);
1075
0
    // Sentinel = 'aSerial'
1076
0
    (msg__)->WriteSentinel(1247987114);
1077
0
    WriteIPDLParam(msg__, this, aExternalImageId);
1078
0
    // Sentinel = 'aExternalImageId'
1079
0
    (msg__)->WriteSentinel(2889998824);
1080
0
1081
0
1082
0
1083
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1084
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
1085
0
    }
1086
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_PTextureConstructor", OTHER);
1087
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
1088
0
        mozilla::ipc::LogicError("Transition error");
1089
0
    }
1090
0
1091
0
    bool sendok__ = (GetIPCChannel())->Send(msg__);
1092
0
    if ((!(sendok__))) {
1093
0
        FatalError("constructor for actor failed");
1094
0
        return nullptr;
1095
0
    }
1096
0
    return actor;
1097
0
}
1098
1099
auto PCompositorBridgeChild::SendSyncWithCompositor() -> bool
1100
0
{
1101
0
    IPC::Message* msg__ = PCompositorBridge::Msg_SyncWithCompositor(Id());
1102
0
1103
0
1104
0
1105
0
1106
0
    Message reply__;
1107
0
1108
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1109
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
1110
0
    }
1111
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_SyncWithCompositor", OTHER);
1112
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
1113
0
        mozilla::ipc::LogicError("Transition error");
1114
0
    }
1115
0
1116
0
    bool sendok__;
1117
0
    {
1118
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_SyncWithCompositor");
1119
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
1120
0
    }
1121
0
    if ((!(sendok__))) {
1122
0
        return false;
1123
0
    }
1124
0
1125
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1126
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1127
0
    }
1128
0
1129
0
    return true;
1130
0
}
1131
1132
auto PCompositorBridgeChild::SendPWebRenderBridgeConstructor(
1133
        const PipelineId& pipelineId,
1134
        const LayoutDeviceIntSize& aSize,
1135
        TextureFactoryIdentifier* textureFactoryIdentifier,
1136
        IdNamespace* idNamespace) -> PWebRenderBridgeChild*
1137
0
{
1138
0
    return SendPWebRenderBridgeConstructor(AllocPWebRenderBridgeChild(pipelineId, aSize, textureFactoryIdentifier, idNamespace), pipelineId, aSize, textureFactoryIdentifier, idNamespace);
1139
0
}
1140
1141
auto PCompositorBridgeChild::SendPWebRenderBridgeConstructor(
1142
        PWebRenderBridgeChild* actor,
1143
        const PipelineId& pipelineId,
1144
        const LayoutDeviceIntSize& aSize,
1145
        TextureFactoryIdentifier* textureFactoryIdentifier,
1146
        IdNamespace* idNamespace) -> PWebRenderBridgeChild*
1147
0
{
1148
0
    if ((!(actor))) {
1149
0
        NS_WARNING("Error constructing actor PWebRenderBridgeChild");
1150
0
        return nullptr;
1151
0
    }
1152
0
    (actor)->SetManagerAndRegister(this);
1153
0
    (mManagedPWebRenderBridgeChild).PutEntry(actor);
1154
0
    (actor)->mLivenessState = mozilla::ipc::LivenessState::Start;
1155
0
1156
0
    IPC::Message* msg__ = PCompositorBridge::Msg_PWebRenderBridgeConstructor(Id());
1157
0
1158
0
    MOZ_RELEASE_ASSERT(actor, "NULL actor value passed to non-nullable param");
1159
0
    WriteIPDLParam(msg__, this, actor);
1160
0
    // Sentinel = 'actor'
1161
0
    (msg__)->WriteSentinel(875202478);
1162
0
    WriteIPDLParam(msg__, this, pipelineId);
1163
0
    // Sentinel = 'pipelineId'
1164
0
    (msg__)->WriteSentinel(4067092043);
1165
0
    WriteIPDLParam(msg__, this, aSize);
1166
0
    // Sentinel = 'aSize'
1167
0
    (msg__)->WriteSentinel(2556665555);
1168
0
1169
0
1170
0
1171
0
    Message reply__;
1172
0
1173
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1174
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
1175
0
    }
1176
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_PWebRenderBridgeConstructor", OTHER);
1177
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
1178
0
        mozilla::ipc::LogicError("Transition error");
1179
0
    }
1180
0
1181
0
    bool sendok__;
1182
0
    {
1183
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_PWebRenderBridgeConstructor");
1184
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
1185
0
    }
1186
0
    if ((!(sendok__))) {
1187
0
        FatalError("constructor for actor failed");
1188
0
        return nullptr;
1189
0
    }
1190
0
1191
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1192
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1193
0
    }
1194
0
1195
0
    PickleIterator iter__(reply__);
1196
0
1197
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, textureFactoryIdentifier)))) {
1198
0
        if (true) {
1199
0
            FatalError("constructor for actor failed");
1200
0
            return nullptr;
1201
0
        }
1202
0
    }
1203
0
    // Sentinel = 'textureFactoryIdentifier'
1204
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 1630882508)))) {
1205
0
        mozilla::ipc::SentinelReadError("Error deserializing 'TextureFactoryIdentifier'");
1206
0
        return nullptr;
1207
0
    }
1208
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, idNamespace)))) {
1209
0
        if (true) {
1210
0
            FatalError("constructor for actor failed");
1211
0
            return nullptr;
1212
0
        }
1213
0
    }
1214
0
    // Sentinel = 'idNamespace'
1215
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 1477745059)))) {
1216
0
        mozilla::ipc::SentinelReadError("Error deserializing 'IdNamespace'");
1217
0
        return nullptr;
1218
0
    }
1219
0
    (reply__).EndRead(iter__, (reply__).type());
1220
0
    return actor;
1221
0
}
1222
1223
auto PCompositorBridgeChild::SendCheckContentOnlyTDR(
1224
        const uint32_t& sequenceNum,
1225
        bool* isContentOnlyTDR) -> bool
1226
0
{
1227
0
    IPC::Message* msg__ = PCompositorBridge::Msg_CheckContentOnlyTDR(Id());
1228
0
1229
0
    WriteIPDLParam(msg__, this, sequenceNum);
1230
0
    // Sentinel = 'sequenceNum'
1231
0
    (msg__)->WriteSentinel(1222681202);
1232
0
1233
0
1234
0
1235
0
    Message reply__;
1236
0
1237
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1238
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
1239
0
    }
1240
0
    AUTO_PROFILER_LABEL("PCompositorBridge::Msg_CheckContentOnlyTDR", OTHER);
1241
0
    if ((!(StateTransition(false, (&(mLivenessState)))))) {
1242
0
        mozilla::ipc::LogicError("Transition error");
1243
0
    }
1244
0
1245
0
    bool sendok__;
1246
0
    {
1247
0
        AUTO_PROFILER_TRACING("IPC", "PCompositorBridge::Msg_CheckContentOnlyTDR");
1248
0
        sendok__ = (GetIPCChannel())->Send(msg__, (&(reply__)));
1249
0
    }
1250
0
    if ((!(sendok__))) {
1251
0
        return false;
1252
0
    }
1253
0
1254
0
    if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1255
0
        mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received reply ", ((&(reply__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1256
0
    }
1257
0
1258
0
    PickleIterator iter__(reply__);
1259
0
1260
0
    if ((!(ReadIPDLParam((&(reply__)), (&(iter__)), this, isContentOnlyTDR)))) {
1261
0
        FatalError("Error deserializing 'bool'");
1262
0
        return false;
1263
0
    }
1264
0
    // Sentinel = 'isContentOnlyTDR'
1265
0
    if ((!(((&(reply__)))->ReadSentinel((&(iter__)), 1577543213)))) {
1266
0
        mozilla::ipc::SentinelReadError("Error deserializing 'bool'");
1267
0
        return false;
1268
0
    }
1269
0
    (reply__).EndRead(iter__, (reply__).type());
1270
0
1271
0
    return true;
1272
0
}
1273
1274
auto PCompositorBridgeChild::RemoveManagee(
1275
        int32_t aProtocolId,
1276
        IProtocol* aListener) -> void
1277
0
{
1278
0
    switch (aProtocolId) {
1279
0
    case PAPZMsgStart:
1280
0
        {
1281
0
            PAPZChild* actor = static_cast<PAPZChild*>(aListener);
1282
0
            auto& container = mManagedPAPZChild;
1283
0
            MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
1284
0
1285
0
            (container).RemoveEntry(actor);
1286
0
            DeallocPAPZChild(actor);
1287
0
            return;
1288
0
        }
1289
0
    case PAPZCTreeManagerMsgStart:
1290
0
        {
1291
0
            PAPZCTreeManagerChild* actor = static_cast<PAPZCTreeManagerChild*>(aListener);
1292
0
            auto& container = mManagedPAPZCTreeManagerChild;
1293
0
            MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
1294
0
1295
0
            (container).RemoveEntry(actor);
1296
0
            DeallocPAPZCTreeManagerChild(actor);
1297
0
            return;
1298
0
        }
1299
0
    case PLayerTransactionMsgStart:
1300
0
        {
1301
0
            PLayerTransactionChild* actor = static_cast<PLayerTransactionChild*>(aListener);
1302
0
            auto& container = mManagedPLayerTransactionChild;
1303
0
            MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
1304
0
1305
0
            (container).RemoveEntry(actor);
1306
0
            DeallocPLayerTransactionChild(actor);
1307
0
            return;
1308
0
        }
1309
0
    case PTextureMsgStart:
1310
0
        {
1311
0
            PTextureChild* actor = static_cast<PTextureChild*>(aListener);
1312
0
            auto& container = mManagedPTextureChild;
1313
0
            MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
1314
0
1315
0
            (container).RemoveEntry(actor);
1316
0
            DeallocPTextureChild(actor);
1317
0
            return;
1318
0
        }
1319
0
    case PCompositorWidgetMsgStart:
1320
0
        {
1321
0
            PCompositorWidgetChild* actor = static_cast<PCompositorWidgetChild*>(aListener);
1322
0
            auto& container = mManagedPCompositorWidgetChild;
1323
0
            MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
1324
0
1325
0
            (container).RemoveEntry(actor);
1326
0
            DeallocPCompositorWidgetChild(actor);
1327
0
            return;
1328
0
        }
1329
0
    case PWebRenderBridgeMsgStart:
1330
0
        {
1331
0
            PWebRenderBridgeChild* actor = static_cast<PWebRenderBridgeChild*>(aListener);
1332
0
            auto& container = mManagedPWebRenderBridgeChild;
1333
0
            MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
1334
0
1335
0
            (container).RemoveEntry(actor);
1336
0
            DeallocPWebRenderBridgeChild(actor);
1337
0
            return;
1338
0
        }
1339
0
    default:
1340
0
        {
1341
0
            FatalError("unreached");
1342
0
            return;
1343
0
        }
1344
0
    }
1345
0
}
1346
1347
auto PCompositorBridgeChild::OnMessageReceived(const Message& msg__) -> PCompositorBridgeChild::Result
1348
0
{
1349
0
    switch ((msg__).type()) {
1350
0
    case PCompositorBridge::Msg_InvalidateLayers__ID:
1351
0
        {
1352
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1353
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1354
0
            }
1355
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_InvalidateLayers", OTHER);
1356
0
1357
0
            PickleIterator iter__(msg__);
1358
0
            LayersId layersId;
1359
0
1360
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(layersId)))))) {
1361
0
                FatalError("Error deserializing 'LayersId'");
1362
0
                return MsgValueError;
1363
0
            }
1364
0
            // Sentinel = 'layersId'
1365
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2382073245)))) {
1366
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayersId'");
1367
0
                return MsgValueError;
1368
0
            }
1369
0
            (msg__).EndRead(iter__, (msg__).type());
1370
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1371
0
                FatalError("Transition error");
1372
0
                return MsgValueError;
1373
0
            }
1374
0
            if ((!(RecvInvalidateLayers(layersId)))) {
1375
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1376
0
                // Error handled in mozilla::ipc::IPCResult
1377
0
                return MsgProcessingError;
1378
0
            }
1379
0
1380
0
            return MsgProcessed;
1381
0
        }
1382
0
    case PCompositorBridge::Msg_DidComposite__ID:
1383
0
        {
1384
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1385
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1386
0
            }
1387
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_DidComposite", OTHER);
1388
0
1389
0
            PickleIterator iter__(msg__);
1390
0
            LayersId id;
1391
0
            TransactionId transactionId;
1392
0
            TimeStamp compositeStart;
1393
0
            TimeStamp compositeEnd;
1394
0
1395
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(id)))))) {
1396
0
                FatalError("Error deserializing 'LayersId'");
1397
0
                return MsgValueError;
1398
0
            }
1399
0
            // Sentinel = 'id'
1400
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2794505629)))) {
1401
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayersId'");
1402
0
                return MsgValueError;
1403
0
            }
1404
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(transactionId)))))) {
1405
0
                FatalError("Error deserializing 'TransactionId'");
1406
0
                return MsgValueError;
1407
0
            }
1408
0
            // Sentinel = 'transactionId'
1409
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 3330976378)))) {
1410
0
                mozilla::ipc::SentinelReadError("Error deserializing 'TransactionId'");
1411
0
                return MsgValueError;
1412
0
            }
1413
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(compositeStart)))))) {
1414
0
                FatalError("Error deserializing 'TimeStamp'");
1415
0
                return MsgValueError;
1416
0
            }
1417
0
            // Sentinel = 'compositeStart'
1418
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2314271973)))) {
1419
0
                mozilla::ipc::SentinelReadError("Error deserializing 'TimeStamp'");
1420
0
                return MsgValueError;
1421
0
            }
1422
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(compositeEnd)))))) {
1423
0
                FatalError("Error deserializing 'TimeStamp'");
1424
0
                return MsgValueError;
1425
0
            }
1426
0
            // Sentinel = 'compositeEnd'
1427
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 3871762396)))) {
1428
0
                mozilla::ipc::SentinelReadError("Error deserializing 'TimeStamp'");
1429
0
                return MsgValueError;
1430
0
            }
1431
0
            (msg__).EndRead(iter__, (msg__).type());
1432
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1433
0
                FatalError("Transition error");
1434
0
                return MsgValueError;
1435
0
            }
1436
0
            if ((!(RecvDidComposite(id, transactionId, compositeStart, compositeEnd)))) {
1437
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1438
0
                // Error handled in mozilla::ipc::IPCResult
1439
0
                return MsgProcessingError;
1440
0
            }
1441
0
1442
0
            return MsgProcessed;
1443
0
        }
1444
0
    case PCompositorBridge::Msg_RemotePaintIsReady__ID:
1445
0
        {
1446
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1447
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1448
0
            }
1449
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_RemotePaintIsReady", OTHER);
1450
0
1451
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1452
0
                FatalError("Transition error");
1453
0
                return MsgValueError;
1454
0
            }
1455
0
            if ((!(RecvRemotePaintIsReady()))) {
1456
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1457
0
                // Error handled in mozilla::ipc::IPCResult
1458
0
                return MsgProcessingError;
1459
0
            }
1460
0
1461
0
            return MsgProcessed;
1462
0
        }
1463
0
    case PCompositorBridge::Msg_UpdatePluginConfigurations__ID:
1464
0
        {
1465
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1466
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1467
0
            }
1468
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_UpdatePluginConfigurations", OTHER);
1469
0
1470
0
            PickleIterator iter__(msg__);
1471
0
            LayoutDeviceIntPoint aContentOffset;
1472
0
            LayoutDeviceIntRegion aVisibleRegion;
1473
0
            nsTArray<PluginWindowData> aPlugins;
1474
0
1475
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aContentOffset)))))) {
1476
0
                FatalError("Error deserializing 'LayoutDeviceIntPoint'");
1477
0
                return MsgValueError;
1478
0
            }
1479
0
            // Sentinel = 'aContentOffset'
1480
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2149079995)))) {
1481
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayoutDeviceIntPoint'");
1482
0
                return MsgValueError;
1483
0
            }
1484
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aVisibleRegion)))))) {
1485
0
                FatalError("Error deserializing 'LayoutDeviceIntRegion'");
1486
0
                return MsgValueError;
1487
0
            }
1488
0
            // Sentinel = 'aVisibleRegion'
1489
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 24324155)))) {
1490
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayoutDeviceIntRegion'");
1491
0
                return MsgValueError;
1492
0
            }
1493
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aPlugins)))))) {
1494
0
                FatalError("Error deserializing 'nsTArray'");
1495
0
                return MsgValueError;
1496
0
            }
1497
0
            // Sentinel = 'aPlugins'
1498
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1444186915)))) {
1499
0
                mozilla::ipc::SentinelReadError("Error deserializing 'nsTArray'");
1500
0
                return MsgValueError;
1501
0
            }
1502
0
            (msg__).EndRead(iter__, (msg__).type());
1503
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1504
0
                FatalError("Transition error");
1505
0
                return MsgValueError;
1506
0
            }
1507
0
            if ((!(RecvUpdatePluginConfigurations(aContentOffset, aVisibleRegion, std::move(aPlugins))))) {
1508
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1509
0
                // Error handled in mozilla::ipc::IPCResult
1510
0
                return MsgProcessingError;
1511
0
            }
1512
0
1513
0
            return MsgProcessed;
1514
0
        }
1515
0
    case PCompositorBridge::Msg_CaptureAllPlugins__ID:
1516
0
        {
1517
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1518
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1519
0
            }
1520
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_CaptureAllPlugins", OTHER);
1521
0
1522
0
            PickleIterator iter__(msg__);
1523
0
            uintptr_t aParentWidget;
1524
0
1525
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aParentWidget)))))) {
1526
0
                FatalError("Error deserializing 'uintptr_t'");
1527
0
                return MsgValueError;
1528
0
            }
1529
0
            // Sentinel = 'aParentWidget'
1530
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2198235748)))) {
1531
0
                mozilla::ipc::SentinelReadError("Error deserializing 'uintptr_t'");
1532
0
                return MsgValueError;
1533
0
            }
1534
0
            (msg__).EndRead(iter__, (msg__).type());
1535
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1536
0
                FatalError("Transition error");
1537
0
                return MsgValueError;
1538
0
            }
1539
0
            if ((!(RecvCaptureAllPlugins(aParentWidget)))) {
1540
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1541
0
                // Error handled in mozilla::ipc::IPCResult
1542
0
                return MsgProcessingError;
1543
0
            }
1544
0
1545
0
            return MsgProcessed;
1546
0
        }
1547
0
    case PCompositorBridge::Msg_HideAllPlugins__ID:
1548
0
        {
1549
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1550
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1551
0
            }
1552
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_HideAllPlugins", OTHER);
1553
0
1554
0
            PickleIterator iter__(msg__);
1555
0
            uintptr_t aParentWidget;
1556
0
1557
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aParentWidget)))))) {
1558
0
                FatalError("Error deserializing 'uintptr_t'");
1559
0
                return MsgValueError;
1560
0
            }
1561
0
            // Sentinel = 'aParentWidget'
1562
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2198235748)))) {
1563
0
                mozilla::ipc::SentinelReadError("Error deserializing 'uintptr_t'");
1564
0
                return MsgValueError;
1565
0
            }
1566
0
            (msg__).EndRead(iter__, (msg__).type());
1567
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1568
0
                FatalError("Transition error");
1569
0
                return MsgValueError;
1570
0
            }
1571
0
            if ((!(RecvHideAllPlugins(aParentWidget)))) {
1572
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1573
0
                // Error handled in mozilla::ipc::IPCResult
1574
0
                return MsgProcessingError;
1575
0
            }
1576
0
1577
0
            return MsgProcessed;
1578
0
        }
1579
0
    case PCompositorBridge::Msg_ParentAsyncMessages__ID:
1580
0
        {
1581
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1582
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1583
0
            }
1584
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_ParentAsyncMessages", OTHER);
1585
0
1586
0
            PickleIterator iter__(msg__);
1587
0
            nsTArray<AsyncParentMessageData> aMessages;
1588
0
1589
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aMessages)))))) {
1590
0
                FatalError("Error deserializing 'nsTArray'");
1591
0
                return MsgValueError;
1592
0
            }
1593
0
            // Sentinel = 'aMessages'
1594
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1923086976)))) {
1595
0
                mozilla::ipc::SentinelReadError("Error deserializing 'nsTArray'");
1596
0
                return MsgValueError;
1597
0
            }
1598
0
            (msg__).EndRead(iter__, (msg__).type());
1599
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1600
0
                FatalError("Transition error");
1601
0
                return MsgValueError;
1602
0
            }
1603
0
            if ((!(RecvParentAsyncMessages(std::move(aMessages))))) {
1604
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1605
0
                // Error handled in mozilla::ipc::IPCResult
1606
0
                return MsgProcessingError;
1607
0
            }
1608
0
1609
0
            return MsgProcessed;
1610
0
        }
1611
0
    case PCompositorBridge::Msg_ObserveLayersUpdate__ID:
1612
0
        {
1613
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1614
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1615
0
            }
1616
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_ObserveLayersUpdate", OTHER);
1617
0
1618
0
            PickleIterator iter__(msg__);
1619
0
            LayersId aLayersId;
1620
0
            LayersObserverEpoch aEpoch;
1621
0
            bool aActive;
1622
0
1623
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aLayersId)))))) {
1624
0
                FatalError("Error deserializing 'LayersId'");
1625
0
                return MsgValueError;
1626
0
            }
1627
0
            // Sentinel = 'aLayersId'
1628
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1401196721)))) {
1629
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayersId'");
1630
0
                return MsgValueError;
1631
0
            }
1632
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aEpoch)))))) {
1633
0
                FatalError("Error deserializing 'LayersObserverEpoch'");
1634
0
                return MsgValueError;
1635
0
            }
1636
0
            // Sentinel = 'aEpoch'
1637
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2333012390)))) {
1638
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayersObserverEpoch'");
1639
0
                return MsgValueError;
1640
0
            }
1641
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aActive)))))) {
1642
0
                FatalError("Error deserializing 'bool'");
1643
0
                return MsgValueError;
1644
0
            }
1645
0
            // Sentinel = 'aActive'
1646
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1215369048)))) {
1647
0
                mozilla::ipc::SentinelReadError("Error deserializing 'bool'");
1648
0
                return MsgValueError;
1649
0
            }
1650
0
            (msg__).EndRead(iter__, (msg__).type());
1651
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1652
0
                FatalError("Transition error");
1653
0
                return MsgValueError;
1654
0
            }
1655
0
            if ((!(RecvObserveLayersUpdate(aLayersId, aEpoch, aActive)))) {
1656
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1657
0
                // Error handled in mozilla::ipc::IPCResult
1658
0
                return MsgProcessingError;
1659
0
            }
1660
0
1661
0
            return MsgProcessed;
1662
0
        }
1663
0
    case PCompositorBridge::Reply___delete____ID:
1664
0
        {
1665
0
            return MsgProcessed;
1666
0
        }
1667
0
    case PCompositorBridge::Reply_PCompositorWidgetConstructor__ID:
1668
0
        {
1669
0
            return MsgProcessed;
1670
0
        }
1671
0
    case PCompositorBridge::Reply_PAPZConstructor__ID:
1672
0
        {
1673
0
            return MsgProcessed;
1674
0
        }
1675
0
    case PCompositorBridge::Reply_PAPZCTreeManagerConstructor__ID:
1676
0
        {
1677
0
            return MsgProcessed;
1678
0
        }
1679
0
    case PCompositorBridge::Reply_PLayerTransactionConstructor__ID:
1680
0
        {
1681
0
            return MsgProcessed;
1682
0
        }
1683
0
    case PCompositorBridge::Reply_PTextureConstructor__ID:
1684
0
        {
1685
0
            return MsgProcessed;
1686
0
        }
1687
0
    case PCompositorBridge::Msg_SharedCompositorFrameMetrics__ID:
1688
0
        {
1689
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1690
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1691
0
            }
1692
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_SharedCompositorFrameMetrics", OTHER);
1693
0
1694
0
            PickleIterator iter__(msg__);
1695
0
            Handle metrics;
1696
0
            CrossProcessMutexHandle mutex;
1697
0
            LayersId aLayersId;
1698
0
            uint32_t aAPZCId;
1699
0
1700
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(metrics)))))) {
1701
0
                FatalError("Error deserializing 'Handle'");
1702
0
                return MsgValueError;
1703
0
            }
1704
0
            // Sentinel = 'metrics'
1705
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 293471184)))) {
1706
0
                mozilla::ipc::SentinelReadError("Error deserializing 'Handle'");
1707
0
                return MsgValueError;
1708
0
            }
1709
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(mutex)))))) {
1710
0
                FatalError("Error deserializing 'CrossProcessMutexHandle'");
1711
0
                return MsgValueError;
1712
0
            }
1713
0
            // Sentinel = 'mutex'
1714
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 4247164084)))) {
1715
0
                mozilla::ipc::SentinelReadError("Error deserializing 'CrossProcessMutexHandle'");
1716
0
                return MsgValueError;
1717
0
            }
1718
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aLayersId)))))) {
1719
0
                FatalError("Error deserializing 'LayersId'");
1720
0
                return MsgValueError;
1721
0
            }
1722
0
            // Sentinel = 'aLayersId'
1723
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1401196721)))) {
1724
0
                mozilla::ipc::SentinelReadError("Error deserializing 'LayersId'");
1725
0
                return MsgValueError;
1726
0
            }
1727
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aAPZCId)))))) {
1728
0
                FatalError("Error deserializing 'uint32_t'");
1729
0
                return MsgValueError;
1730
0
            }
1731
0
            // Sentinel = 'aAPZCId'
1732
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1661101435)))) {
1733
0
                mozilla::ipc::SentinelReadError("Error deserializing 'uint32_t'");
1734
0
                return MsgValueError;
1735
0
            }
1736
0
            (msg__).EndRead(iter__, (msg__).type());
1737
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1738
0
                FatalError("Transition error");
1739
0
                return MsgValueError;
1740
0
            }
1741
0
            if ((!(RecvSharedCompositorFrameMetrics(metrics, mutex, aLayersId, aAPZCId)))) {
1742
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1743
0
                // Error handled in mozilla::ipc::IPCResult
1744
0
                return MsgProcessingError;
1745
0
            }
1746
0
1747
0
            return MsgProcessed;
1748
0
        }
1749
0
    case PCompositorBridge::Msg_ReleaseSharedCompositorFrameMetrics__ID:
1750
0
        {
1751
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1752
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1753
0
            }
1754
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_ReleaseSharedCompositorFrameMetrics", OTHER);
1755
0
1756
0
            PickleIterator iter__(msg__);
1757
0
            ViewID aId;
1758
0
            uint32_t aAPZCId;
1759
0
1760
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aId)))))) {
1761
0
                FatalError("Error deserializing 'ViewID'");
1762
0
                return MsgValueError;
1763
0
            }
1764
0
            // Sentinel = 'aId'
1765
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 2735041817)))) {
1766
0
                mozilla::ipc::SentinelReadError("Error deserializing 'ViewID'");
1767
0
                return MsgValueError;
1768
0
            }
1769
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(aAPZCId)))))) {
1770
0
                FatalError("Error deserializing 'uint32_t'");
1771
0
                return MsgValueError;
1772
0
            }
1773
0
            // Sentinel = 'aAPZCId'
1774
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 1661101435)))) {
1775
0
                mozilla::ipc::SentinelReadError("Error deserializing 'uint32_t'");
1776
0
                return MsgValueError;
1777
0
            }
1778
0
            (msg__).EndRead(iter__, (msg__).type());
1779
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1780
0
                FatalError("Transition error");
1781
0
                return MsgValueError;
1782
0
            }
1783
0
            if ((!(RecvReleaseSharedCompositorFrameMetrics(aId, aAPZCId)))) {
1784
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1785
0
                // Error handled in mozilla::ipc::IPCResult
1786
0
                return MsgProcessingError;
1787
0
            }
1788
0
1789
0
            return MsgProcessed;
1790
0
        }
1791
0
    case PCompositorBridge::Msg_NotifyWebRenderError__ID:
1792
0
        {
1793
0
            if (mozilla::ipc::LoggingEnabledFor("PCompositorBridgeChild")) {
1794
0
                mozilla::ipc::LogMessageForProtocol("PCompositorBridgeChild", OtherPid(), "Received ", ((&(msg__)))->type(), mozilla::ipc::MessageDirection::eReceiving);
1795
0
            }
1796
0
            AUTO_PROFILER_LABEL("PCompositorBridge::Msg_NotifyWebRenderError", OTHER);
1797
0
1798
0
            PickleIterator iter__(msg__);
1799
0
            WebRenderError error;
1800
0
1801
0
            if ((!(ReadIPDLParam((&(msg__)), (&(iter__)), this, (&(error)))))) {
1802
0
                FatalError("Error deserializing 'WebRenderError'");
1803
0
                return MsgValueError;
1804
0
            }
1805
0
            // Sentinel = 'error'
1806
0
            if ((!(((&(msg__)))->ReadSentinel((&(iter__)), 313726327)))) {
1807
0
                mozilla::ipc::SentinelReadError("Error deserializing 'WebRenderError'");
1808
0
                return MsgValueError;
1809
0
            }
1810
0
            (msg__).EndRead(iter__, (msg__).type());
1811
0
            if ((!(StateTransition(false, (&(mLivenessState)))))) {
1812
0
                FatalError("Transition error");
1813
0
                return MsgValueError;
1814
0
            }
1815
0
            if ((!(RecvNotifyWebRenderError(error)))) {
1816
0
                mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!");
1817
0
                // Error handled in mozilla::ipc::IPCResult
1818
0
                return MsgProcessingError;
1819
0
            }
1820
0
1821
0
            return MsgProcessed;
1822
0
        }
1823
0
    default:
1824
0
        {
1825
0
            return MsgNotKnown;
1826
0
        }
1827
0
    }
1828
0
}
1829
1830
auto PCompositorBridgeChild::OnMessageReceived(
1831
        const Message& msg__,
1832
        Message*& reply__) -> PCompositorBridgeChild::Result
1833
0
{
1834
0
    return MsgNotKnown;
1835
0
}
1836
1837
auto PCompositorBridgeChild::OnCallReceived(
1838
        const Message& msg__,
1839
        Message*& reply__) -> PCompositorBridgeChild::Result
1840
0
{
1841
0
    MOZ_ASSERT_UNREACHABLE("message protocol not supported");
1842
0
    return MsgNotKnown;
1843
0
}
1844
1845
auto PCompositorBridgeChild::GetProtocolTypeId() -> int32_t
1846
0
{
1847
0
    return PCompositorBridgeMsgStart;
1848
0
}
1849
1850
auto PCompositorBridgeChild::DestroySubtree(ActorDestroyReason why) -> void
1851
0
{
1852
0
    // Unregister from our manager.
1853
0
    Unregister(Id());
1854
0
1855
0
    ActorDestroyReason subtreewhy = (((why) == (Deletion)) || ((why) == (FailedConstructor)) ? AncestorDeletion : why);
1856
0
1857
0
    {
1858
0
        // Recursively shutting down PAPZ kids
1859
0
        nsTArray<PAPZChild*> kids;
1860
0
        // Accumulate kids into a stable structure to iterate over
1861
0
        ManagedPAPZChild(kids);
1862
0
        for (auto& kid : kids) {
1863
0
            // Guarding against a child removing a sibling from the list during the iteration.
1864
0
            if ((mManagedPAPZChild).Contains(kid)) {
1865
0
                (kid)->DestroySubtree(subtreewhy);
1866
0
            }
1867
0
        }
1868
0
    }
1869
0
    {
1870
0
        // Recursively shutting down PAPZCTreeManager kids
1871
0
        nsTArray<PAPZCTreeManagerChild*> kids;
1872
0
        // Accumulate kids into a stable structure to iterate over
1873
0
        ManagedPAPZCTreeManagerChild(kids);
1874
0
        for (auto& kid : kids) {
1875
0
            // Guarding against a child removing a sibling from the list during the iteration.
1876
0
            if ((mManagedPAPZCTreeManagerChild).Contains(kid)) {
1877
0
                (kid)->DestroySubtree(subtreewhy);
1878
0
            }
1879
0
        }
1880
0
    }
1881
0
    {
1882
0
        // Recursively shutting down PLayerTransaction kids
1883
0
        nsTArray<PLayerTransactionChild*> kids;
1884
0
        // Accumulate kids into a stable structure to iterate over
1885
0
        ManagedPLayerTransactionChild(kids);
1886
0
        for (auto& kid : kids) {
1887
0
            // Guarding against a child removing a sibling from the list during the iteration.
1888
0
            if ((mManagedPLayerTransactionChild).Contains(kid)) {
1889
0
                (kid)->DestroySubtree(subtreewhy);
1890
0
            }
1891
0
        }
1892
0
    }
1893
0
    {
1894
0
        // Recursively shutting down PTexture kids
1895
0
        nsTArray<PTextureChild*> kids;
1896
0
        // Accumulate kids into a stable structure to iterate over
1897
0
        ManagedPTextureChild(kids);
1898
0
        for (auto& kid : kids) {
1899
0
            // Guarding against a child removing a sibling from the list during the iteration.
1900
0
            if ((mManagedPTextureChild).Contains(kid)) {
1901
0
                (kid)->DestroySubtree(subtreewhy);
1902
0
            }
1903
0
        }
1904
0
    }
1905
0
    {
1906
0
        // Recursively shutting down PCompositorWidget kids
1907
0
        nsTArray<PCompositorWidgetChild*> kids;
1908
0
        // Accumulate kids into a stable structure to iterate over
1909
0
        ManagedPCompositorWidgetChild(kids);
1910
0
        for (auto& kid : kids) {
1911
0
            // Guarding against a child removing a sibling from the list during the iteration.
1912
0
            if ((mManagedPCompositorWidgetChild).Contains(kid)) {
1913
0
                (kid)->DestroySubtree(subtreewhy);
1914
0
            }
1915
0
        }
1916
0
    }
1917
0
    {
1918
0
        // Recursively shutting down PWebRenderBridge kids
1919
0
        nsTArray<PWebRenderBridgeChild*> kids;
1920
0
        // Accumulate kids into a stable structure to iterate over
1921
0
        ManagedPWebRenderBridgeChild(kids);
1922
0
        for (auto& kid : kids) {
1923
0
            // Guarding against a child removing a sibling from the list during the iteration.
1924
0
            if ((mManagedPWebRenderBridgeChild).Contains(kid)) {
1925
0
                (kid)->DestroySubtree(subtreewhy);
1926
0
            }
1927
0
        }
1928
0
    }
1929
0
1930
0
    // Reject owning pending responses.
1931
0
    (GetIPCChannel())->RejectPendingResponsesForActor(this);
1932
0
1933
0
    // Finally, destroy "us".
1934
0
    ActorDestroy(why);
1935
0
}
1936
1937
auto PCompositorBridgeChild::DeallocSubtree() -> void
1938
0
{
1939
0
    {
1940
0
        // Recursively deleting PAPZ kids
1941
0
        for (auto iter = (mManagedPAPZChild).Iter(); (!((iter).Done())); (iter).Next()) {
1942
0
            (((iter).Get())->GetKey())->DeallocSubtree();
1943
0
        }
1944
0
1945
0
        for (auto iter = (mManagedPAPZChild).Iter(); (!((iter).Done())); (iter).Next()) {
1946
0
            DeallocPAPZChild(((iter).Get())->GetKey());
1947
0
        }
1948
0
        (mManagedPAPZChild).Clear();
1949
0
    }
1950
0
    {
1951
0
        // Recursively deleting PAPZCTreeManager kids
1952
0
        for (auto iter = (mManagedPAPZCTreeManagerChild).Iter(); (!((iter).Done())); (iter).Next()) {
1953
0
            (((iter).Get())->GetKey())->DeallocSubtree();
1954
0
        }
1955
0
1956
0
        for (auto iter = (mManagedPAPZCTreeManagerChild).Iter(); (!((iter).Done())); (iter).Next()) {
1957
0
            DeallocPAPZCTreeManagerChild(((iter).Get())->GetKey());
1958
0
        }
1959
0
        (mManagedPAPZCTreeManagerChild).Clear();
1960
0
    }
1961
0
    {
1962
0
        // Recursively deleting PLayerTransaction kids
1963
0
        for (auto iter = (mManagedPLayerTransactionChild).Iter(); (!((iter).Done())); (iter).Next()) {
1964
0
            (((iter).Get())->GetKey())->DeallocSubtree();
1965
0
        }
1966
0
1967
0
        for (auto iter = (mManagedPLayerTransactionChild).Iter(); (!((iter).Done())); (iter).Next()) {
1968
0
            DeallocPLayerTransactionChild(((iter).Get())->GetKey());
1969
0
        }
1970
0
        (mManagedPLayerTransactionChild).Clear();
1971
0
    }
1972
0
    {
1973
0
        // Recursively deleting PTexture kids
1974
0
        for (auto iter = (mManagedPTextureChild).Iter(); (!((iter).Done())); (iter).Next()) {
1975
0
            (((iter).Get())->GetKey())->DeallocSubtree();
1976
0
        }
1977
0
1978
0
        for (auto iter = (mManagedPTextureChild).Iter(); (!((iter).Done())); (iter).Next()) {
1979
0
            DeallocPTextureChild(((iter).Get())->GetKey());
1980
0
        }
1981
0
        (mManagedPTextureChild).Clear();
1982
0
    }
1983
0
    {
1984
0
        // Recursively deleting PCompositorWidget kids
1985
0
        for (auto iter = (mManagedPCompositorWidgetChild).Iter(); (!((iter).Done())); (iter).Next()) {
1986
0
            (((iter).Get())->GetKey())->DeallocSubtree();
1987
0
        }
1988
0
1989
0
        for (auto iter = (mManagedPCompositorWidgetChild).Iter(); (!((iter).Done())); (iter).Next()) {
1990
0
            DeallocPCompositorWidgetChild(((iter).Get())->GetKey());
1991
0
        }
1992
0
        (mManagedPCompositorWidgetChild).Clear();
1993
0
    }
1994
0
    {
1995
0
        // Recursively deleting PWebRenderBridge kids
1996
0
        for (auto iter = (mManagedPWebRenderBridgeChild).Iter(); (!((iter).Done())); (iter).Next()) {
1997
0
            (((iter).Get())->GetKey())->DeallocSubtree();
1998
0
        }
1999
0
2000
0
        for (auto iter = (mManagedPWebRenderBridgeChild).Iter(); (!((iter).Done())); (iter).Next()) {
2001
0
            DeallocPWebRenderBridgeChild(((iter).Get())->GetKey());
2002
0
        }
2003
0
        (mManagedPWebRenderBridgeChild).Clear();
2004
0
    }
2005
0
}
2006
2007
2008
2009
} // namespace layers
2010
} // namespace mozilla
2011
namespace mozilla {
2012
namespace ipc {
2013
auto IPDLParamTraits<mozilla::layers::PCompositorBridgeChild>::Write(
2014
        IPC::Message* aMsg,
2015
        mozilla::ipc::IProtocol* aActor,
2016
        const paramType& aVar) -> void
2017
0
{
2018
0
    int32_t id;
2019
0
    if ((!(aVar))) {
2020
0
        id = 0;
2021
0
    }
2022
0
    else {
2023
0
        id = (aVar)->Id();
2024
0
        if ((1) == (id)) {
2025
0
            (aActor)->FatalError("actor has been |delete|d");
2026
0
        }
2027
0
    }
2028
0
    WriteIPDLParam(aMsg, aActor, id);
2029
0
}
2030
2031
auto IPDLParamTraits<mozilla::layers::PCompositorBridgeChild>::Read(
2032
        const IPC::Message* aMsg,
2033
        PickleIterator* aIter,
2034
        mozilla::ipc::IProtocol* aActor,
2035
        paramType* aVar) -> bool
2036
0
{
2037
0
    mozilla::Maybe<mozilla::ipc::IProtocol*> actor = (aActor)->ReadActor(aMsg, aIter, true, "PCompositorBridge", PCompositorBridgeMsgStart);
2038
0
    if ((actor).isNothing()) {
2039
0
        return false;
2040
0
    }
2041
0
2042
0
    (*(aVar)) = static_cast<mozilla::layers::PCompositorBridgeChild*>((actor).value());
2043
0
    return true;
2044
0
}
2045
2046
} // namespace ipc
2047
} // namespace mozilla