1 : //
2 : // Automatically generated by ipdlc.
3 : // Edit at your own risk
4 : //
5 :
6 :
7 : #include "mozilla/layout/PRenderFrameParent.h"
8 :
9 : #include "mozilla/dom/PBrowserParent.h"
10 : #include "mozilla/layers/PLayersParent.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::PBrowserParent;
23 : using mozilla::layers::PLayersParent;
24 :
25 : namespace mozilla {
26 : namespace layout {
27 :
28 :
29 : bool
30 0 : PRenderFrameParent::RecvPLayersConstructor(
31 : PLayersParent* actor,
32 : LayersBackend* backend)
33 : {
34 0 : return true;
35 : }
36 :
37 : bool
38 0 : PRenderFrameParent::Recv__delete__()
39 : {
40 0 : return true;
41 : }
42 :
43 : void
44 0 : PRenderFrameParent::ActorDestroy(ActorDestroyReason why)
45 : {
46 0 : }
47 :
48 0 : PRenderFrameParent::PRenderFrameParent() :
49 : mId(0),
50 0 : mState(PRenderFrame::__Dead)
51 : {
52 0 : MOZ_COUNT_CTOR(PRenderFrameParent);
53 0 : }
54 :
55 0 : PRenderFrameParent::~PRenderFrameParent()
56 : {
57 0 : MOZ_COUNT_DTOR(PRenderFrameParent);
58 0 : }
59 :
60 : PBrowserParent*
61 0 : PRenderFrameParent::Manager()
62 : {
63 0 : return static_cast<PBrowserParent*>(mManager);
64 : }
65 :
66 : void
67 0 : PRenderFrameParent::ManagedPLayersParent(InfallibleTArray<PLayersParent*>& aArr) const
68 : {
69 0 : aArr = mManagedPLayersParent;
70 0 : }
71 :
72 : const InfallibleTArray<PLayersParent*>&
73 0 : PRenderFrameParent::ManagedPLayersParent() const
74 : {
75 0 : return mManagedPLayersParent;
76 : }
77 :
78 : PRenderFrame::State
79 0 : PRenderFrameParent::state()
80 : {
81 0 : return mState;
82 : }
83 :
84 : int32
85 0 : PRenderFrameParent::Register(ChannelListener* aRouted)
86 : {
87 0 : return (mManager)->Register(aRouted);
88 : }
89 :
90 : int32
91 0 : PRenderFrameParent::RegisterID(
92 : ChannelListener* aRouted,
93 : int32 aId)
94 : {
95 0 : return (mManager)->RegisterID(aRouted, aId);
96 : }
97 :
98 : ChannelListener*
99 0 : PRenderFrameParent::Lookup(int32 aId)
100 : {
101 0 : return (mManager)->Lookup(aId);
102 : }
103 :
104 : void
105 0 : PRenderFrameParent::Unregister(int32 aId)
106 : {
107 0 : return (mManager)->Unregister(aId);
108 : }
109 :
110 : void
111 0 : PRenderFrameParent::RemoveManagee(
112 : int32 aProtocolId,
113 : ChannelListener* aListener)
114 : {
115 0 : switch (aProtocolId) {
116 : case PLayersMsgStart:
117 : {
118 0 : PLayersParent* actor = static_cast<PLayersParent*>(aListener);
119 0 : NS_ABORT_IF_FALSE(((mManagedPLayersParent).NoIndex) != ((mManagedPLayersParent).BinaryIndexOf(actor)), "actor not managed by this!");
120 :
121 0 : (mManagedPLayersParent).RemoveElementSorted(actor);
122 0 : DeallocPLayers(actor);
123 0 : return;
124 : }
125 : default:
126 : {
127 0 : NS_RUNTIMEABORT("unreached");
128 0 : return;
129 : }
130 : }
131 : }
132 :
133 : Shmem::SharedMemory*
134 0 : PRenderFrameParent::CreateSharedMemory(
135 : size_t aSize,
136 : Shmem::SharedMemory::SharedMemoryType type,
137 : bool unsafe,
138 : Shmem::id_t* aId)
139 : {
140 0 : return (mManager)->CreateSharedMemory(aSize, type, unsafe, aId);
141 : }
142 :
143 : bool
144 0 : PRenderFrameParent::AdoptSharedMemory(
145 : Shmem::SharedMemory* segment,
146 : Shmem::id_t* aId)
147 : {
148 0 : return (mManager)->AdoptSharedMemory(segment, aId);
149 : }
150 :
151 : Shmem::SharedMemory*
152 0 : PRenderFrameParent::LookupSharedMemory(Shmem::id_t aId)
153 : {
154 0 : return (mManager)->LookupSharedMemory(aId);
155 : }
156 :
157 : bool
158 0 : PRenderFrameParent::IsTrackingSharedMemory(Shmem::SharedMemory* segment)
159 : {
160 0 : return (mManager)->IsTrackingSharedMemory(segment);
161 : }
162 :
163 : bool
164 0 : PRenderFrameParent::DestroySharedMemory(Shmem& aShmem)
165 : {
166 0 : return (mManager)->DestroySharedMemory(aShmem);
167 : }
168 :
169 : ProcessHandle
170 0 : PRenderFrameParent::OtherProcess() const
171 : {
172 0 : return (mManager)->OtherProcess();
173 : }
174 :
175 : AsyncChannel*
176 0 : PRenderFrameParent::GetIPCChannel()
177 : {
178 0 : return mChannel;
179 : }
180 :
181 : PRenderFrameParent::Result
182 0 : PRenderFrameParent::OnMessageReceived(const Message& __msg)
183 : {
184 0 : switch ((__msg).type()) {
185 : case PRenderFrame::Msg___delete____ID:
186 : {
187 0 : (const_cast<Message&>(__msg)).set_name("PRenderFrame::Msg___delete__");
188 0 : if (mozilla::ipc::LoggingEnabled()) {
189 0 : (static_cast<const PRenderFrame::Msg___delete__*>((&(__msg))))->Log("[PRenderFrameParent] Received ", stderr);
190 : }
191 :
192 0 : void* __iter = 0;
193 : PRenderFrameParent* actor;
194 :
195 0 : if ((!(Read((&(actor)), (&(__msg)), (&(__iter)), false)))) {
196 0 : FatalError("error deserializing (better message TODO)");
197 0 : return MsgValueError;
198 : }
199 0 : (__msg).EndRead(__iter);
200 0 : if ((!(PRenderFrame::Transition(mState, Trigger(Trigger::Recv, PRenderFrame::Msg___delete____ID), (&(mState)))))) {
201 0 : NS_WARNING("bad state transition!");
202 : }
203 0 : if ((!(Recv__delete__()))) {
204 0 : return MsgProcessingError;
205 : }
206 :
207 0 : (actor)->DestroySubtree(Deletion);
208 0 : (actor)->DeallocSubtree();
209 0 : ((actor)->mManager)->RemoveManagee(PRenderFrameMsgStart, actor);
210 :
211 :
212 0 : return MsgProcessed;
213 : }
214 : default:
215 : {
216 0 : return MsgNotKnown;
217 : }
218 : }
219 : }
220 :
221 : PRenderFrameParent::Result
222 0 : PRenderFrameParent::OnMessageReceived(
223 : const Message& __msg,
224 : Message*& __reply)
225 : {
226 0 : switch ((__msg).type()) {
227 : case PRenderFrame::Msg_PLayersConstructor__ID:
228 : {
229 0 : (const_cast<Message&>(__msg)).set_name("PRenderFrame::Msg_PLayersConstructor");
230 0 : if (mozilla::ipc::LoggingEnabled()) {
231 0 : (static_cast<const PRenderFrame::Msg_PLayersConstructor*>((&(__msg))))->Log("[PRenderFrameParent] Received ", stderr);
232 : }
233 :
234 0 : void* __iter = 0;
235 : ActorHandle __handle;
236 : PLayersParent* actor;
237 :
238 0 : if ((!(Read((&(__handle)), (&(__msg)), (&(__iter)))))) {
239 0 : FatalError("error deserializing (better message TODO)");
240 0 : return MsgValueError;
241 : }
242 0 : (__msg).EndRead(__iter);
243 0 : if ((!(PRenderFrame::Transition(mState, Trigger(Trigger::Recv, PRenderFrame::Msg_PLayersConstructor__ID), (&(mState)))))) {
244 0 : NS_WARNING("bad state transition!");
245 : }
246 : LayersBackend backend;
247 0 : actor = AllocPLayers((&(backend)));
248 0 : if ((!(actor))) {
249 0 : return MsgValueError;
250 : }
251 0 : (actor)->mId = RegisterID(actor, (__handle).mId);
252 0 : (actor)->mManager = this;
253 0 : (actor)->mChannel = mChannel;
254 0 : (mManagedPLayersParent).InsertElementSorted(actor);
255 0 : (actor)->mState = mozilla::layers::PLayers::__Start;
256 :
257 0 : int32 __id = mId;
258 0 : if ((!(RecvPLayersConstructor(actor, (&(backend)))))) {
259 0 : return MsgProcessingError;
260 : }
261 0 : __reply = new PRenderFrame::Reply_PLayersConstructor();
262 :
263 0 : Write(backend, __reply);
264 0 : (__reply)->set_routing_id(__id);
265 0 : (__reply)->set_sync();
266 0 : (__reply)->set_reply();
267 :
268 0 : if (mozilla::ipc::LoggingEnabled()) {
269 0 : (static_cast<const PRenderFrame::Reply_PLayersConstructor*>(__reply))->Log("[PRenderFrameParent] Sending reply ", stderr);
270 : }
271 :
272 0 : return MsgProcessed;
273 : }
274 : default:
275 : {
276 0 : return MsgNotKnown;
277 : }
278 : }
279 : }
280 :
281 : PRenderFrameParent::Result
282 0 : PRenderFrameParent::OnCallReceived(
283 : const Message& __msg,
284 : Message*& __reply)
285 : {
286 0 : return MsgNotKnown;
287 : }
288 :
289 : void
290 0 : PRenderFrameParent::OnProcessingError(Result code)
291 : {
292 0 : NS_RUNTIMEABORT("`OnProcessingError' called on non-toplevel actor");
293 0 : }
294 :
295 : bool
296 0 : PRenderFrameParent::OnReplyTimeout()
297 : {
298 0 : NS_RUNTIMEABORT("`OnReplyTimeout' called on non-toplevel actor");
299 0 : return false;
300 : }
301 :
302 : void
303 0 : PRenderFrameParent::OnChannelClose()
304 : {
305 0 : NS_RUNTIMEABORT("`OnClose' called on non-toplevel actor");
306 0 : }
307 :
308 : void
309 0 : PRenderFrameParent::OnChannelError()
310 : {
311 0 : NS_RUNTIMEABORT("`OnError' called on non-toplevel actor");
312 0 : }
313 :
314 : void
315 0 : PRenderFrameParent::OnChannelConnected(int32 pid)
316 : {
317 0 : NS_RUNTIMEABORT("'OnConnected' called on non-toplevel actor");
318 0 : }
319 :
320 : bool
321 0 : PRenderFrameParent::AllocShmem(
322 : size_t aSize,
323 : Shmem::SharedMemory::SharedMemoryType aType,
324 : Shmem* aMem)
325 : {
326 : Shmem::id_t aId;
327 0 : nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, false, (&(aId))));
328 0 : if ((!(rawmem))) {
329 0 : return false;
330 : }
331 :
332 0 : (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
333 0 : return true;
334 : }
335 :
336 : bool
337 0 : PRenderFrameParent::AllocUnsafeShmem(
338 : size_t aSize,
339 : Shmem::SharedMemory::SharedMemoryType aType,
340 : Shmem* aMem)
341 : {
342 : Shmem::id_t aId;
343 0 : nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, true, (&(aId))));
344 0 : if ((!(rawmem))) {
345 0 : return false;
346 : }
347 :
348 0 : (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
349 0 : return true;
350 : }
351 :
352 : bool
353 0 : PRenderFrameParent::AdoptShmem(
354 : Shmem& aMem,
355 : Shmem* aOutMem)
356 : {
357 0 : Shmem::SharedMemory* rawmem = (aMem).Segment(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
358 0 : if (((!(rawmem))) || (IsTrackingSharedMemory(rawmem))) {
359 0 : NS_RUNTIMEABORT("bad Shmem");
360 : }
361 :
362 : Shmem::id_t aId;
363 0 : if ((!(AdoptSharedMemory(rawmem, (&(aId)))))) {
364 0 : return false;
365 : }
366 :
367 0 : (*(aOutMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), rawmem, aId);
368 0 : return true;
369 : }
370 :
371 : bool
372 0 : PRenderFrameParent::DeallocShmem(Shmem& aMem)
373 : {
374 0 : bool ok = DestroySharedMemory(aMem);
375 0 : (aMem).forget(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
376 0 : return ok;
377 : }
378 :
379 : void
380 0 : PRenderFrameParent::FatalError(const char* const msg) const
381 : {
382 : // Virtual method to prevent inlining.
383 : // This give us better error reporting.
384 : // See bug 589371
385 :
386 0 : NS_ERROR("IPDL error:");
387 0 : NS_ERROR(msg);
388 :
389 0 : NS_ERROR("[PRenderFrameParent] killing child side as a result");
390 :
391 0 : if ((!(base::KillProcess(OtherProcess(), base::PROCESS_END_KILLED_BY_USER, false)))) {
392 0 : NS_ERROR(" may have failed to kill child!");
393 : }
394 0 : }
395 :
396 : void
397 0 : PRenderFrameParent::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<PLayersParent*> kids = mManagedPLayersParent;
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 : PRenderFrameParent::DeallocSubtree()
419 : {
420 : {
421 : // Recursively deleting PLayers kids
422 0 : InfallibleTArray<PLayersParent*>& kids = mManagedPLayersParent;
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 : (mManagedPLayersParent).Clear();
431 : }
432 0 : }
433 :
434 : void
435 0 : PRenderFrameParent::Write(
436 : PRenderFrameParent* __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 : PRenderFrameParent::Read(
459 : PRenderFrameParent** __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<PRenderFrameParent*>(Lookup(id));
477 0 : if ((!((*(__v))))) {
478 0 : return false;
479 : }
480 : }
481 0 : return true;
482 : }
483 :
484 : void
485 0 : PRenderFrameParent::Write(
486 : PLayersParent* __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 : PRenderFrameParent::Read(
509 : PLayersParent** __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<PLayersParent*>(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
|