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