Line data Source code
1 : //
2 : // Automatically generated by ipdlc.
3 : // Edit at your own risk
4 : //
5 :
6 :
7 : #include "mozilla/layers/PCompositorManagerChild.h"
8 : #include "ipc/IPCMessageUtils.h"
9 : #ifdef MOZ_CRASHREPORTER
10 : # include "nsXULAppAPI.h"
11 : #endif
12 :
13 : #include "mozilla/layers/PCompositorBridgeChild.h"
14 :
15 : #include "nsIFile.h"
16 : #include "GeckoProfiler.h"
17 :
18 : namespace mozilla {
19 : namespace layers {
20 :
21 :
22 0 : auto PCompositorManagerChild::ActorDestroy(ActorDestroyReason aWhy) -> void
23 : {
24 0 : }
25 :
26 0 : auto PCompositorManagerChild::ProcessingError(
27 : Result aCode,
28 : const char* aReason) -> void
29 : {
30 0 : }
31 :
32 0 : auto PCompositorManagerChild::ShouldContinueFromReplyTimeout() -> bool
33 : {
34 0 : return true;
35 : }
36 :
37 134 : auto PCompositorManagerChild::EnteredCxxStack() -> void
38 : {
39 134 : }
40 :
41 134 : auto PCompositorManagerChild::ExitedCxxStack() -> void
42 : {
43 134 : }
44 :
45 0 : auto PCompositorManagerChild::EnteredCall() -> void
46 : {
47 0 : }
48 :
49 0 : auto PCompositorManagerChild::ExitedCall() -> void
50 : {
51 0 : }
52 :
53 3 : MOZ_IMPLICIT PCompositorManagerChild::PCompositorManagerChild() :
54 : mozilla::ipc::IToplevelProtocol(PCompositorManagerMsgStart, mozilla::ipc::ChildSide),
55 : mChannel("PCompositorManagerChild", ALLOW_THIS_IN_INITIALIZER_LIST(this)),
56 3 : mState(PCompositorManager::__Start)
57 : {
58 3 : MOZ_COUNT_CTOR(PCompositorManagerChild);
59 3 : }
60 :
61 0 : PCompositorManagerChild::~PCompositorManagerChild()
62 : {
63 0 : MOZ_COUNT_DTOR(PCompositorManagerChild);
64 0 : }
65 :
66 0 : auto PCompositorManagerChild::ManagedPCompositorBridgeChild(nsTArray<PCompositorBridgeChild*>& aArr) const -> void
67 : {
68 0 : (mManagedPCompositorBridgeChild).ToArray(aArr);
69 0 : }
70 :
71 0 : auto PCompositorManagerChild::ManagedPCompositorBridgeChild() const -> const ManagedContainer<PCompositorBridgeChild>&
72 : {
73 0 : return mManagedPCompositorBridgeChild;
74 : }
75 :
76 3 : auto PCompositorManagerChild::SendPCompositorBridgeConstructor(const CompositorBridgeOptions& options) -> PCompositorBridgeChild*
77 : {
78 3 : return SendPCompositorBridgeConstructor(AllocPCompositorBridgeChild(options), options);
79 : }
80 :
81 3 : auto PCompositorManagerChild::SendPCompositorBridgeConstructor(
82 : PCompositorBridgeChild* actor,
83 : const CompositorBridgeOptions& options) -> PCompositorBridgeChild*
84 : {
85 3 : if ((!(actor))) {
86 0 : NS_WARNING("Error constructing actor PCompositorBridgeChild");
87 0 : return nullptr;
88 : }
89 3 : (actor)->SetManager(this);
90 3 : Register(actor);
91 3 : (actor)->SetIPCChannel(GetIPCChannel());
92 3 : (mManagedPCompositorBridgeChild).PutEntry(actor);
93 3 : (actor)->mState = mozilla::layers::PCompositorBridge::__Start;
94 :
95 3 : IPC::Message* msg__ = PCompositorManager::Msg_PCompositorBridgeConstructor(MSG_ROUTING_CONTROL);
96 :
97 3 : Write(actor, msg__, false);
98 : // Sentinel = 'actor'
99 3 : (msg__)->WriteSentinel(875202478);
100 3 : Write(options, msg__);
101 : // Sentinel = 'options'
102 3 : (msg__)->WriteSentinel(33222909);
103 :
104 3 : (msg__)->set_constructor();
105 :
106 :
107 3 : if (mozilla::ipc::LoggingEnabledFor("PCompositorManagerChild")) {
108 0 : mozilla::ipc::LogMessageForProtocol("PCompositorManagerChild", OtherPid(), "Sending ", (msg__)->type(), mozilla::ipc::MessageDirection::eSending);
109 : }
110 6 : AUTO_PROFILER_LABEL("PCompositorManager::Msg_PCompositorBridgeConstructor", OTHER);
111 3 : PCompositorManager::Transition(PCompositorManager::Msg_PCompositorBridgeConstructor__ID, (&(mState)));
112 :
113 3 : bool sendok__ = (GetIPCChannel())->Send(msg__);
114 3 : if ((!(sendok__))) {
115 0 : FatalError("constructor for actor failed");
116 0 : return nullptr;
117 : }
118 3 : return actor;
119 : }
120 :
121 10 : auto PCompositorManagerChild::GetIPCChannel() -> MessageChannel*
122 : {
123 10 : return (&(mChannel));
124 : }
125 :
126 0 : auto PCompositorManagerChild::GetIPCChannel() const -> const MessageChannel*
127 : {
128 0 : return (&(mChannel));
129 : }
130 :
131 0 : auto PCompositorManagerChild::RemoveManagee(
132 : int32_t aProtocolId,
133 : ProtocolBase* aListener) -> void
134 : {
135 0 : switch (aProtocolId) {
136 : case PCompositorBridgeMsgStart:
137 : {
138 0 : PCompositorBridgeChild* actor = static_cast<PCompositorBridgeChild*>(aListener);
139 0 : auto& container = mManagedPCompositorBridgeChild;
140 0 : MOZ_RELEASE_ASSERT((container).Contains(actor), "actor not managed by this!");
141 :
142 0 : (container).RemoveEntry(actor);
143 0 : DeallocPCompositorBridgeChild(actor);
144 0 : return;
145 : }
146 : default:
147 : {
148 0 : FatalError("unreached");
149 0 : return;
150 : }
151 : }
152 : }
153 :
154 61 : auto PCompositorManagerChild::OnMessageReceived(const Message& msg__) -> PCompositorManagerChild::Result
155 : {
156 61 : int32_t route__ = (msg__).routing_id();
157 61 : if ((MSG_ROUTING_CONTROL) != (route__)) {
158 61 : ChannelListener* routed__ = Lookup(route__);
159 61 : if ((!(routed__))) {
160 0 : return MsgRouteError;
161 : }
162 61 : return (routed__)->OnMessageReceived(msg__);
163 : }
164 :
165 0 : switch ((msg__).type()) {
166 : case PCompositorManager::Reply_PCompositorBridgeConstructor__ID:
167 : {
168 0 : return MsgProcessed;
169 : }
170 : default:
171 : {
172 0 : return MsgNotKnown;
173 : }
174 : case SHMEM_CREATED_MESSAGE_TYPE:
175 : {
176 0 : if ((!(ShmemCreated(msg__)))) {
177 0 : return MsgPayloadError;
178 : }
179 0 : return MsgProcessed;
180 : }
181 : case SHMEM_DESTROYED_MESSAGE_TYPE:
182 : {
183 0 : if ((!(ShmemDestroyed(msg__)))) {
184 0 : return MsgPayloadError;
185 : }
186 0 : return MsgProcessed;
187 : }
188 : }
189 : }
190 :
191 0 : auto PCompositorManagerChild::OnMessageReceived(
192 : const Message& msg__,
193 : Message*& reply__) -> PCompositorManagerChild::Result
194 : {
195 0 : int32_t route__ = (msg__).routing_id();
196 0 : if ((MSG_ROUTING_CONTROL) != (route__)) {
197 0 : ChannelListener* routed__ = Lookup(route__);
198 0 : if ((!(routed__))) {
199 0 : return MsgRouteError;
200 : }
201 0 : return (routed__)->OnMessageReceived(msg__, reply__);
202 : }
203 :
204 0 : return MsgNotKnown;
205 : }
206 :
207 0 : auto PCompositorManagerChild::OnCallReceived(
208 : const Message& msg__,
209 : Message*& reply__) -> PCompositorManagerChild::Result
210 : {
211 0 : MOZ_ASSERT_UNREACHABLE("message protocol not supported");
212 : return MsgNotKnown;
213 : }
214 :
215 0 : auto PCompositorManagerChild::GetProtocolTypeId() -> int32_t
216 : {
217 0 : return PCompositorManagerMsgStart;
218 : }
219 :
220 0 : auto PCompositorManagerChild::OnChannelClose() -> void
221 : {
222 0 : DestroySubtree(NormalShutdown);
223 0 : DeallocSubtree();
224 0 : DeallocShmems();
225 0 : DeallocPCompositorManagerChild();
226 0 : }
227 :
228 0 : auto PCompositorManagerChild::OnChannelError() -> void
229 : {
230 0 : DestroySubtree(AbnormalShutdown);
231 0 : DeallocSubtree();
232 0 : DeallocShmems();
233 0 : DeallocPCompositorManagerChild();
234 0 : }
235 :
236 0 : auto PCompositorManagerChild::ProtocolName() const -> const char*
237 : {
238 0 : return "PCompositorManagerChild";
239 : }
240 :
241 0 : auto PCompositorManagerChild::DestroySubtree(ActorDestroyReason why) -> void
242 : {
243 0 : ActorDestroyReason subtreewhy = (((why) == (Deletion)) || ((why) == (FailedConstructor)) ? AncestorDeletion : why);
244 :
245 : {
246 : // Recursively shutting down PCompositorBridge kids
247 0 : nsTArray<PCompositorBridgeChild*> kids;
248 : // Accumulate kids into a stable structure to iterate over
249 0 : ManagedPCompositorBridgeChild(kids);
250 0 : for (auto& kid : kids) {
251 : // Guarding against a child removing a sibling from the list during the iteration.
252 0 : if ((mManagedPCompositorBridgeChild).Contains(kid)) {
253 0 : (kid)->DestroySubtree(subtreewhy);
254 : }
255 : }
256 : }
257 :
258 : // Reject owning pending promises.
259 0 : (GetIPCChannel())->RejectPendingPromisesForActor(this);
260 :
261 : // Finally, destroy "us".
262 0 : ActorDestroy(why);
263 0 : }
264 :
265 0 : auto PCompositorManagerChild::DeallocSubtree() -> void
266 : {
267 : {
268 : // Recursively deleting PCompositorBridge kids
269 0 : for (auto iter = (mManagedPCompositorBridgeChild).Iter(); (!((iter).Done())); (iter).Next()) {
270 0 : (((iter).Get())->GetKey())->DeallocSubtree();
271 : }
272 :
273 0 : for (auto iter = (mManagedPCompositorBridgeChild).Iter(); (!((iter).Done())); (iter).Next()) {
274 0 : DeallocPCompositorBridgeChild(((iter).Get())->GetKey());
275 : }
276 0 : (mManagedPCompositorBridgeChild).Clear();
277 : }
278 0 : }
279 :
280 0 : auto PCompositorManagerChild::DeallocPCompositorManagerChild() -> void
281 : {
282 0 : }
283 :
284 3 : auto PCompositorManagerChild::Write(
285 : const CompositorBridgeOptions& v__,
286 : Message* msg__) -> void
287 : {
288 : typedef CompositorBridgeOptions type__;
289 3 : Write(int((v__).type()), msg__);
290 : // Sentinel = 'CompositorBridgeOptions'
291 3 : (msg__)->WriteSentinel(1223334017);
292 :
293 3 : switch ((v__).type()) {
294 : case type__::TContentCompositorOptions:
295 : {
296 2 : Write((v__).get_ContentCompositorOptions(), msg__);
297 : // Sentinel = 'TContentCompositorOptions'
298 2 : (msg__)->WriteSentinel(660265439);
299 2 : return;
300 : }
301 : case type__::TWidgetCompositorOptions:
302 : {
303 0 : Write((v__).get_WidgetCompositorOptions(), msg__);
304 : // Sentinel = 'TWidgetCompositorOptions'
305 0 : (msg__)->WriteSentinel(1740490067);
306 0 : return;
307 : }
308 : case type__::TSameProcessWidgetCompositorOptions:
309 : {
310 1 : Write((v__).get_SameProcessWidgetCompositorOptions(), msg__);
311 : // Sentinel = 'TSameProcessWidgetCompositorOptions'
312 1 : (msg__)->WriteSentinel(3995034615);
313 1 : return;
314 : }
315 : default:
316 : {
317 0 : FatalError("unknown union type");
318 0 : return;
319 : }
320 : }
321 : }
322 :
323 0 : auto PCompositorManagerChild::Read(
324 : CompositorBridgeOptions* v__,
325 : const Message* msg__,
326 : PickleIterator* iter__) -> bool
327 : {
328 : typedef CompositorBridgeOptions type__;
329 : int type;
330 0 : if ((!(Read((&(type)), msg__, iter__)))) {
331 0 : mozilla::ipc::UnionTypeReadError("CompositorBridgeOptions");
332 0 : return false;
333 : }
334 : // Sentinel = 'CompositorBridgeOptions'
335 0 : if ((!((msg__)->ReadSentinel(iter__, 1223334017)))) {
336 0 : mozilla::ipc::SentinelReadError("CompositorBridgeOptions");
337 0 : return false;
338 : }
339 :
340 0 : switch (type) {
341 : case type__::TContentCompositorOptions:
342 : {
343 0 : ContentCompositorOptions tmp = ContentCompositorOptions();
344 0 : (*(v__)) = tmp;
345 0 : if ((!(Read((&((v__)->get_ContentCompositorOptions())), msg__, iter__)))) {
346 0 : FatalError("Error deserializing Union type");
347 0 : return false;
348 : }
349 : // Sentinel = 'TContentCompositorOptions'
350 0 : if ((!((msg__)->ReadSentinel(iter__, 660265439)))) {
351 0 : mozilla::ipc::SentinelReadError("Error deserializing Union type");
352 0 : return false;
353 : }
354 0 : return true;
355 : }
356 : case type__::TWidgetCompositorOptions:
357 : {
358 0 : WidgetCompositorOptions tmp = WidgetCompositorOptions();
359 0 : (*(v__)) = tmp;
360 0 : if ((!(Read((&((v__)->get_WidgetCompositorOptions())), msg__, iter__)))) {
361 0 : FatalError("Error deserializing Union type");
362 0 : return false;
363 : }
364 : // Sentinel = 'TWidgetCompositorOptions'
365 0 : if ((!((msg__)->ReadSentinel(iter__, 1740490067)))) {
366 0 : mozilla::ipc::SentinelReadError("Error deserializing Union type");
367 0 : return false;
368 : }
369 0 : return true;
370 : }
371 : case type__::TSameProcessWidgetCompositorOptions:
372 : {
373 0 : SameProcessWidgetCompositorOptions tmp = SameProcessWidgetCompositorOptions();
374 0 : (*(v__)) = tmp;
375 0 : if ((!(Read((&((v__)->get_SameProcessWidgetCompositorOptions())), msg__, iter__)))) {
376 0 : FatalError("Error deserializing Union type");
377 0 : return false;
378 : }
379 : // Sentinel = 'TSameProcessWidgetCompositorOptions'
380 0 : if ((!((msg__)->ReadSentinel(iter__, 3995034615)))) {
381 0 : mozilla::ipc::SentinelReadError("Error deserializing Union type");
382 0 : return false;
383 : }
384 0 : return true;
385 : }
386 : default:
387 : {
388 0 : FatalError("unknown union type");
389 0 : return false;
390 : }
391 : }
392 : }
393 :
394 1 : auto PCompositorManagerChild::Write(
395 : const SameProcessWidgetCompositorOptions& v__,
396 : Message* msg__) -> void
397 : {
398 1 : }
399 :
400 0 : auto PCompositorManagerChild::Read(
401 : SameProcessWidgetCompositorOptions* v__,
402 : const Message* msg__,
403 : PickleIterator* iter__) -> bool
404 : {
405 0 : return true;
406 : }
407 :
408 3 : auto PCompositorManagerChild::Write(
409 : const PCompositorBridgeChild* v__,
410 : Message* msg__,
411 : bool nullable__) -> void
412 : {
413 : int32_t id;
414 3 : if ((!(v__))) {
415 0 : if ((!(nullable__))) {
416 0 : FatalError("NULL actor value passed to non-nullable param");
417 : }
418 0 : id = 0;
419 : }
420 : else {
421 3 : id = (v__)->Id();
422 3 : if ((1) == (id)) {
423 0 : FatalError("actor has been |delete|d");
424 : }
425 : }
426 :
427 3 : Write(id, msg__);
428 3 : }
429 :
430 0 : auto PCompositorManagerChild::Read(
431 : PCompositorBridgeChild** v__,
432 : const Message* msg__,
433 : PickleIterator* iter__,
434 : bool nullable__) -> bool
435 : {
436 0 : Maybe<mozilla::ipc::IProtocol*> actor = ReadActor(msg__, iter__, nullable__, "PCompositorBridge", PCompositorBridgeMsgStart);
437 0 : if ((actor).isNothing()) {
438 0 : return false;
439 : }
440 :
441 0 : (*(v__)) = static_cast<PCompositorBridgeChild*>((actor).value());
442 0 : return true;
443 : }
444 :
445 2 : auto PCompositorManagerChild::Write(
446 : const ContentCompositorOptions& v__,
447 : Message* msg__) -> void
448 : {
449 2 : }
450 :
451 0 : auto PCompositorManagerChild::Read(
452 : ContentCompositorOptions* v__,
453 : const Message* msg__,
454 : PickleIterator* iter__) -> bool
455 : {
456 0 : return true;
457 : }
458 :
459 0 : auto PCompositorManagerChild::Write(
460 : const WidgetCompositorOptions& v__,
461 : Message* msg__) -> void
462 : {
463 0 : Write((v__).scale(), msg__);
464 : // Sentinel = 'scale'
465 0 : (msg__)->WriteSentinel(590599843);
466 0 : Write((v__).vsyncRate(), msg__);
467 : // Sentinel = 'vsyncRate'
468 0 : (msg__)->WriteSentinel(1568351920);
469 0 : Write((v__).options(), msg__);
470 : // Sentinel = 'options'
471 0 : (msg__)->WriteSentinel(33222909);
472 0 : Write((v__).useExternalSurfaceSize(), msg__);
473 : // Sentinel = 'useExternalSurfaceSize'
474 0 : (msg__)->WriteSentinel(778777080);
475 0 : Write((v__).surfaceSize(), msg__);
476 : // Sentinel = 'surfaceSize'
477 0 : (msg__)->WriteSentinel(87441173);
478 0 : }
479 :
480 0 : auto PCompositorManagerChild::Read(
481 : WidgetCompositorOptions* v__,
482 : const Message* msg__,
483 : PickleIterator* iter__) -> bool
484 : {
485 0 : if ((!(Read((&((v__)->scale())), msg__, iter__)))) {
486 0 : FatalError("Error deserializing 'scale' (CSSToLayoutDeviceScale) member of 'WidgetCompositorOptions'");
487 0 : return false;
488 : }
489 : // Sentinel = 'scale'
490 0 : if ((!((msg__)->ReadSentinel(iter__, 590599843)))) {
491 0 : mozilla::ipc::SentinelReadError("Error deserializing 'scale' (CSSToLayoutDeviceScale) member of 'WidgetCompositorOptions'");
492 0 : return false;
493 : }
494 0 : if ((!(Read((&((v__)->vsyncRate())), msg__, iter__)))) {
495 0 : FatalError("Error deserializing 'vsyncRate' (TimeDuration) member of 'WidgetCompositorOptions'");
496 0 : return false;
497 : }
498 : // Sentinel = 'vsyncRate'
499 0 : if ((!((msg__)->ReadSentinel(iter__, 1568351920)))) {
500 0 : mozilla::ipc::SentinelReadError("Error deserializing 'vsyncRate' (TimeDuration) member of 'WidgetCompositorOptions'");
501 0 : return false;
502 : }
503 0 : if ((!(Read((&((v__)->options())), msg__, iter__)))) {
504 0 : FatalError("Error deserializing 'options' (CompositorOptions) member of 'WidgetCompositorOptions'");
505 0 : return false;
506 : }
507 : // Sentinel = 'options'
508 0 : if ((!((msg__)->ReadSentinel(iter__, 33222909)))) {
509 0 : mozilla::ipc::SentinelReadError("Error deserializing 'options' (CompositorOptions) member of 'WidgetCompositorOptions'");
510 0 : return false;
511 : }
512 0 : if ((!(Read((&((v__)->useExternalSurfaceSize())), msg__, iter__)))) {
513 0 : FatalError("Error deserializing 'useExternalSurfaceSize' (bool) member of 'WidgetCompositorOptions'");
514 0 : return false;
515 : }
516 : // Sentinel = 'useExternalSurfaceSize'
517 0 : if ((!((msg__)->ReadSentinel(iter__, 778777080)))) {
518 0 : mozilla::ipc::SentinelReadError("Error deserializing 'useExternalSurfaceSize' (bool) member of 'WidgetCompositorOptions'");
519 0 : return false;
520 : }
521 0 : if ((!(Read((&((v__)->surfaceSize())), msg__, iter__)))) {
522 0 : FatalError("Error deserializing 'surfaceSize' (IntSize) member of 'WidgetCompositorOptions'");
523 0 : return false;
524 : }
525 : // Sentinel = 'surfaceSize'
526 0 : if ((!((msg__)->ReadSentinel(iter__, 87441173)))) {
527 0 : mozilla::ipc::SentinelReadError("Error deserializing 'surfaceSize' (IntSize) member of 'WidgetCompositorOptions'");
528 0 : return false;
529 : }
530 0 : return true;
531 : }
532 :
533 :
534 :
535 : } // namespace layers
536 : } // namespace mozilla
|