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