1 : //
2 : // Automatically generated by ipdlc.
3 : // Edit at your own risk
4 : //
5 :
6 :
7 : #include "mozilla/layout/PRenderFrameChild.h"
8 :
9 : #include "mozilla/dom/PBrowserChild.h"
10 : #include "mozilla/layers/PLayersChild.h"
11 :
12 : typedef IPC::Message Message;
13 : typedef mozilla::ipc::RPCChannel Channel;
14 : typedef mozilla::ipc::RPCChannel::RPCListener ChannelListener;
15 : typedef base::ProcessHandle ProcessHandle;
16 : typedef mozilla::ipc::AsyncChannel AsyncChannel;
17 : typedef mozilla::ipc::SharedMemory SharedMemory;
18 : typedef mozilla::ipc::Trigger Trigger;
19 : typedef mozilla::ipc::ActorHandle ActorHandle;
20 : typedef mozilla::ipc::Shmem Shmem;
21 : typedef mozilla::LayersBackend LayersBackend;
22 : using mozilla::dom::PBrowserChild;
23 : using mozilla::layers::PLayersChild;
24 :
25 : namespace mozilla {
26 : namespace layout {
27 :
28 :
29 : void
30 0 : PRenderFrameChild::ActorDestroy(ActorDestroyReason why)
31 : {
32 0 : }
33 :
34 0 : PRenderFrameChild::PRenderFrameChild() :
35 : mId(0),
36 0 : mState(PRenderFrame::__Dead)
37 : {
38 0 : MOZ_COUNT_CTOR(PRenderFrameChild);
39 0 : }
40 :
41 0 : PRenderFrameChild::~PRenderFrameChild()
42 : {
43 0 : MOZ_COUNT_DTOR(PRenderFrameChild);
44 0 : }
45 :
46 : PBrowserChild*
47 0 : PRenderFrameChild::Manager()
48 : {
49 0 : return static_cast<PBrowserChild*>(mManager);
50 : }
51 :
52 : void
53 0 : PRenderFrameChild::ManagedPLayersChild(InfallibleTArray<PLayersChild*>& aArr) const
54 : {
55 0 : aArr = mManagedPLayersChild;
56 0 : }
57 :
58 : const InfallibleTArray<PLayersChild*>&
59 0 : PRenderFrameChild::ManagedPLayersChild() const
60 : {
61 0 : return mManagedPLayersChild;
62 : }
63 :
64 : PRenderFrame::State
65 0 : PRenderFrameChild::state()
66 : {
67 0 : return mState;
68 : }
69 :
70 : PLayersChild*
71 0 : PRenderFrameChild::SendPLayersConstructor(LayersBackend* backend)
72 : {
73 0 : return SendPLayersConstructor(AllocPLayers(backend), backend);
74 : }
75 :
76 : PLayersChild*
77 0 : PRenderFrameChild::SendPLayersConstructor(
78 : PLayersChild* actor,
79 : LayersBackend* backend)
80 : {
81 0 : if ((!(actor))) {
82 0 : return 0;
83 : }
84 0 : (actor)->mId = Register(actor);
85 0 : (actor)->mManager = this;
86 0 : (actor)->mChannel = mChannel;
87 0 : (mManagedPLayersChild).InsertElementSorted(actor);
88 0 : (actor)->mState = mozilla::layers::PLayers::__Start;
89 :
90 0 : PRenderFrame::Msg_PLayersConstructor* __msg = new PRenderFrame::Msg_PLayersConstructor();
91 :
92 0 : Write(actor, __msg, false);
93 :
94 0 : (__msg)->set_routing_id(mId);
95 0 : (__msg)->set_sync();
96 :
97 :
98 0 : Message __reply;
99 :
100 0 : if (mozilla::ipc::LoggingEnabled()) {
101 0 : (__msg)->Log("[PRenderFrameChild] Sending ", stderr);
102 : }
103 0 : if ((!(PRenderFrame::Transition(mState, Trigger(Trigger::Recv, PRenderFrame::Msg_PLayersConstructor__ID), (&(mState)))))) {
104 0 : NS_WARNING("bad state transition!");
105 : }
106 :
107 0 : bool __sendok = (mChannel)->Send(__msg, (&(__reply)));
108 0 : if ((!(__sendok))) {
109 0 : (actor)->DestroySubtree(FailedConstructor);
110 0 : (actor)->DeallocSubtree();
111 0 : ((actor)->mManager)->RemoveManagee(PLayersMsgStart, actor);
112 0 : return 0;
113 : }
114 :
115 0 : if (mozilla::ipc::LoggingEnabled()) {
116 0 : (static_cast<const PRenderFrame::Reply_PLayersConstructor*>((&(__reply))))->Log("[PRenderFrameChild] Received reply ", stderr);
117 : }
118 :
119 0 : void* __iter = 0;
120 0 : if ((!(Read(backend, (&(__reply)), (&(__iter)))))) {
121 : if (true) {
122 0 : (actor)->DestroySubtree(FailedConstructor);
123 0 : (actor)->DeallocSubtree();
124 0 : ((actor)->mManager)->RemoveManagee(PLayersMsgStart, actor);
125 0 : return 0;
126 : }
127 : }
128 0 : (__reply).EndRead(__iter);
129 0 : return actor;
130 : }
131 :
132 : bool
133 0 : PRenderFrameChild::Send__delete__(PRenderFrameChild* actor)
134 : {
135 0 : if ((!(actor))) {
136 0 : return false;
137 : }
138 :
139 0 : if ((!(actor))) {
140 0 : return false;
141 : }
142 :
143 0 : PRenderFrame::Msg___delete__* __msg = new PRenderFrame::Msg___delete__();
144 :
145 0 : (actor)->Write(actor, __msg, false);
146 :
147 0 : (__msg)->set_routing_id((actor)->mId);
148 :
149 :
150 0 : if (mozilla::ipc::LoggingEnabled()) {
151 0 : (__msg)->Log("[PRenderFrameChild] Sending ", stderr);
152 : }
153 0 : if ((!(PRenderFrame::Transition((actor)->mState, Trigger(Trigger::Recv, PRenderFrame::Msg___delete____ID), (&((actor)->mState)))))) {
154 0 : NS_WARNING("bad state transition!");
155 : }
156 :
157 0 : bool __sendok = ((actor)->mChannel)->Send(__msg);
158 :
159 0 : (actor)->DestroySubtree(Deletion);
160 0 : (actor)->DeallocSubtree();
161 0 : ((actor)->mManager)->RemoveManagee(PRenderFrameMsgStart, actor);
162 0 : return __sendok;
163 : }
164 :
165 : int32
166 0 : PRenderFrameChild::Register(ChannelListener* aRouted)
167 : {
168 0 : return (mManager)->Register(aRouted);
169 : }
170 :
171 : int32
172 0 : PRenderFrameChild::RegisterID(
173 : ChannelListener* aRouted,
174 : int32 aId)
175 : {
176 0 : return (mManager)->RegisterID(aRouted, aId);
177 : }
178 :
179 : ChannelListener*
180 0 : PRenderFrameChild::Lookup(int32 aId)
181 : {
182 0 : return (mManager)->Lookup(aId);
183 : }
184 :
185 : void
186 0 : PRenderFrameChild::Unregister(int32 aId)
187 : {
188 0 : return (mManager)->Unregister(aId);
189 : }
190 :
191 : void
192 0 : PRenderFrameChild::RemoveManagee(
193 : int32 aProtocolId,
194 : ChannelListener* aListener)
195 : {
196 0 : switch (aProtocolId) {
197 : case PLayersMsgStart:
198 : {
199 0 : PLayersChild* actor = static_cast<PLayersChild*>(aListener);
200 0 : NS_ABORT_IF_FALSE(((mManagedPLayersChild).NoIndex) != ((mManagedPLayersChild).BinaryIndexOf(actor)), "actor not managed by this!");
201 :
202 0 : (mManagedPLayersChild).RemoveElementSorted(actor);
203 0 : DeallocPLayers(actor);
204 0 : return;
205 : }
206 : default:
207 : {
208 0 : NS_RUNTIMEABORT("unreached");
209 0 : return;
210 : }
211 : }
212 : }
213 :
214 : Shmem::SharedMemory*
215 0 : PRenderFrameChild::CreateSharedMemory(
216 : size_t aSize,
217 : Shmem::SharedMemory::SharedMemoryType type,
218 : bool unsafe,
219 : Shmem::id_t* aId)
220 : {
221 0 : return (mManager)->CreateSharedMemory(aSize, type, unsafe, aId);
222 : }
223 :
224 : bool
225 0 : PRenderFrameChild::AdoptSharedMemory(
226 : Shmem::SharedMemory* segment,
227 : Shmem::id_t* aId)
228 : {
229 0 : return (mManager)->AdoptSharedMemory(segment, aId);
230 : }
231 :
232 : Shmem::SharedMemory*
233 0 : PRenderFrameChild::LookupSharedMemory(Shmem::id_t aId)
234 : {
235 0 : return (mManager)->LookupSharedMemory(aId);
236 : }
237 :
238 : bool
239 0 : PRenderFrameChild::IsTrackingSharedMemory(Shmem::SharedMemory* segment)
240 : {
241 0 : return (mManager)->IsTrackingSharedMemory(segment);
242 : }
243 :
244 : bool
245 0 : PRenderFrameChild::DestroySharedMemory(Shmem& aShmem)
246 : {
247 0 : return (mManager)->DestroySharedMemory(aShmem);
248 : }
249 :
250 : ProcessHandle
251 0 : PRenderFrameChild::OtherProcess() const
252 : {
253 0 : return (mManager)->OtherProcess();
254 : }
255 :
256 : AsyncChannel*
257 0 : PRenderFrameChild::GetIPCChannel()
258 : {
259 0 : return mChannel;
260 : }
261 :
262 : PRenderFrameChild::Result
263 0 : PRenderFrameChild::OnMessageReceived(const Message& __msg)
264 : {
265 0 : switch ((__msg).type()) {
266 : case PRenderFrame::Reply___delete____ID:
267 : {
268 0 : return MsgProcessed;
269 : }
270 : default:
271 : {
272 0 : return MsgNotKnown;
273 : }
274 : }
275 : }
276 :
277 : PRenderFrameChild::Result
278 0 : PRenderFrameChild::OnMessageReceived(
279 : const Message& __msg,
280 : Message*& __reply)
281 : {
282 0 : return MsgNotKnown;
283 : }
284 :
285 : PRenderFrameChild::Result
286 0 : PRenderFrameChild::OnCallReceived(
287 : const Message& __msg,
288 : Message*& __reply)
289 : {
290 0 : return MsgNotKnown;
291 : }
292 :
293 : void
294 0 : PRenderFrameChild::OnProcessingError(Result code)
295 : {
296 0 : NS_RUNTIMEABORT("`OnProcessingError' called on non-toplevel actor");
297 0 : }
298 :
299 : bool
300 0 : PRenderFrameChild::OnReplyTimeout()
301 : {
302 0 : NS_RUNTIMEABORT("`OnReplyTimeout' called on non-toplevel actor");
303 0 : return false;
304 : }
305 :
306 : void
307 0 : PRenderFrameChild::OnChannelClose()
308 : {
309 0 : NS_RUNTIMEABORT("`OnClose' called on non-toplevel actor");
310 0 : }
311 :
312 : void
313 0 : PRenderFrameChild::OnChannelError()
314 : {
315 0 : NS_RUNTIMEABORT("`OnError' called on non-toplevel actor");
316 0 : }
317 :
318 : void
319 0 : PRenderFrameChild::OnChannelConnected(int32 pid)
320 : {
321 0 : NS_RUNTIMEABORT("'OnConnected' called on non-toplevel actor");
322 0 : }
323 :
324 : bool
325 0 : PRenderFrameChild::AllocShmem(
326 : size_t aSize,
327 : Shmem::SharedMemory::SharedMemoryType aType,
328 : Shmem* aMem)
329 : {
330 : Shmem::id_t aId;
331 0 : nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, false, (&(aId))));
332 0 : if ((!(rawmem))) {
333 0 : return false;
334 : }
335 :
336 0 : (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
337 0 : return true;
338 : }
339 :
340 : bool
341 0 : PRenderFrameChild::AllocUnsafeShmem(
342 : size_t aSize,
343 : Shmem::SharedMemory::SharedMemoryType aType,
344 : Shmem* aMem)
345 : {
346 : Shmem::id_t aId;
347 0 : nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, true, (&(aId))));
348 0 : if ((!(rawmem))) {
349 0 : return false;
350 : }
351 :
352 0 : (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
353 0 : return true;
354 : }
355 :
356 : bool
357 0 : PRenderFrameChild::AdoptShmem(
358 : Shmem& aMem,
359 : Shmem* aOutMem)
360 : {
361 0 : Shmem::SharedMemory* rawmem = (aMem).Segment(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
362 0 : if (((!(rawmem))) || (IsTrackingSharedMemory(rawmem))) {
363 0 : NS_RUNTIMEABORT("bad Shmem");
364 : }
365 :
366 : Shmem::id_t aId;
367 0 : if ((!(AdoptSharedMemory(rawmem, (&(aId)))))) {
368 0 : return false;
369 : }
370 :
371 0 : (*(aOutMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), rawmem, aId);
372 0 : return true;
373 : }
374 :
375 : bool
376 0 : PRenderFrameChild::DeallocShmem(Shmem& aMem)
377 : {
378 0 : bool ok = DestroySharedMemory(aMem);
379 0 : (aMem).forget(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
380 0 : return ok;
381 : }
382 :
383 : void
384 0 : PRenderFrameChild::FatalError(const char* const msg) const
385 : {
386 : // Virtual method to prevent inlining.
387 : // This give us better error reporting.
388 : // See bug 589371
389 :
390 0 : NS_ERROR("IPDL error:");
391 0 : NS_ERROR(msg);
392 :
393 0 : NS_RUNTIMEABORT("[PRenderFrameChild] abort()ing as a result");
394 0 : }
395 :
396 : void
397 0 : PRenderFrameChild::DestroySubtree(ActorDestroyReason why)
398 : {
399 : // Unregister from our manager.
400 0 : Unregister(mId);
401 0 : mId = 1;
402 :
403 0 : ActorDestroyReason subtreewhy = (((why) == (Deletion)) || ((why) == (FailedConstructor)) ? AncestorDeletion : why);
404 :
405 : {
406 : // Recursively shutting down PLayers kids
407 0 : InfallibleTArray<PLayersChild*> kids = mManagedPLayersChild;
408 0 : for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
409 0 : (kids[i])->DestroySubtree(subtreewhy);
410 : }
411 : }
412 :
413 : // Finally, destroy "us".
414 0 : ActorDestroy(why);
415 0 : }
416 :
417 : void
418 0 : PRenderFrameChild::DeallocSubtree()
419 : {
420 : {
421 : // Recursively deleting PLayers kids
422 0 : InfallibleTArray<PLayersChild*>& kids = mManagedPLayersChild;
423 0 : for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
424 0 : (kids[i])->DeallocSubtree();
425 : }
426 :
427 0 : for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
428 0 : DeallocPLayers(kids[i]);
429 : }
430 0 : (mManagedPLayersChild).Clear();
431 : }
432 0 : }
433 :
434 : void
435 0 : PRenderFrameChild::Write(
436 : PRenderFrameChild* __v,
437 : Message* __msg,
438 : bool __nullable)
439 : {
440 : int32 id;
441 0 : if ((!(__v))) {
442 0 : if ((!(__nullable))) {
443 0 : NS_RUNTIMEABORT("NULL actor value passed to non-nullable param");
444 : }
445 0 : id = 0;
446 : }
447 : else {
448 0 : id = (__v)->mId;
449 0 : if ((1) == (id)) {
450 0 : NS_RUNTIMEABORT("actor has been |delete|d");
451 : }
452 : }
453 :
454 0 : Write(id, __msg);
455 0 : }
456 :
457 : bool
458 0 : PRenderFrameChild::Read(
459 : PRenderFrameChild** __v,
460 : const Message* __msg,
461 : void** __iter,
462 : bool __nullable)
463 : {
464 : int32 id;
465 0 : if ((!(Read((&(id)), __msg, __iter)))) {
466 0 : return false;
467 : }
468 0 : if (((1) == (id)) || (((0) == (id)) && ((!(__nullable))))) {
469 0 : return false;
470 : }
471 :
472 0 : if ((0) == (id)) {
473 0 : (*(__v)) = 0;
474 : }
475 : else {
476 0 : (*(__v)) = static_cast<PRenderFrameChild*>(Lookup(id));
477 0 : if ((!((*(__v))))) {
478 0 : return false;
479 : }
480 : }
481 0 : return true;
482 : }
483 :
484 : void
485 0 : PRenderFrameChild::Write(
486 : PLayersChild* __v,
487 : Message* __msg,
488 : bool __nullable)
489 : {
490 : int32 id;
491 0 : if ((!(__v))) {
492 0 : if ((!(__nullable))) {
493 0 : NS_RUNTIMEABORT("NULL actor value passed to non-nullable param");
494 : }
495 0 : id = 0;
496 : }
497 : else {
498 0 : id = (__v)->mId;
499 0 : if ((1) == (id)) {
500 0 : NS_RUNTIMEABORT("actor has been |delete|d");
501 : }
502 : }
503 :
504 0 : Write(id, __msg);
505 0 : }
506 :
507 : bool
508 0 : PRenderFrameChild::Read(
509 : PLayersChild** __v,
510 : const Message* __msg,
511 : void** __iter,
512 : bool __nullable)
513 : {
514 : int32 id;
515 0 : if ((!(Read((&(id)), __msg, __iter)))) {
516 0 : return false;
517 : }
518 0 : if (((1) == (id)) || (((0) == (id)) && ((!(__nullable))))) {
519 0 : return false;
520 : }
521 :
522 0 : if ((0) == (id)) {
523 0 : (*(__v)) = 0;
524 : }
525 : else {
526 0 : (*(__v)) = static_cast<PLayersChild*>(Lookup(id));
527 0 : if ((!((*(__v))))) {
528 0 : return false;
529 : }
530 : }
531 0 : return true;
532 : }
533 :
534 :
535 :
536 : } // namespace layout
537 : } // namespace mozilla
|