1 : //
2 : // Automatically generated by ipdlc.
3 : // Edit at your own risk
4 : //
5 :
6 : #ifndef PPluginModuleParent_h
7 : #define PPluginModuleParent_h
8 :
9 : #include "mozilla/plugins/PPluginModule.h"
10 : namespace mozilla {
11 : namespace plugins {
12 : class PPluginIdentifierParent;
13 : } // namespace plugins
14 : } // namespace mozilla
15 :
16 : namespace mozilla {
17 : namespace plugins {
18 : class PPluginInstanceParent;
19 : } // namespace plugins
20 : } // namespace mozilla
21 :
22 : namespace mozilla {
23 : namespace plugins {
24 : class PPluginScriptableObjectParent;
25 : } // namespace plugins
26 : } // namespace mozilla
27 :
28 : namespace mozilla {
29 : namespace dom {
30 : class PCrashReporterParent;
31 : } // namespace dom
32 : } // namespace mozilla
33 :
34 : #ifdef DEBUG
35 : #include "prenv.h"
36 : #endif // DEBUG
37 : #include "base/id_map.h"
38 : #include "mozilla/ipc/RPCChannel.h"
39 :
40 :
41 : namespace mozilla {
42 : namespace plugins {
43 : class PPluginInstanceParent;
44 : } // namespace plugins
45 : } // namespace mozilla
46 :
47 :
48 : namespace mozilla {
49 : namespace dom {
50 : class PCrashReporterParent;
51 : } // namespace dom
52 : } // namespace mozilla
53 :
54 :
55 : namespace mozilla {
56 : namespace plugins {
57 : class PPluginIdentifierParent;
58 : } // namespace plugins
59 : } // namespace mozilla
60 :
61 : namespace mozilla {
62 : namespace plugins {
63 :
64 :
65 : class /*NS_ABSTRACT_CLASS*/ PPluginModuleParent :
66 : protected mozilla::ipc::RPCChannel::RPCListener,
67 : protected mozilla::ipc::IProtocolManager<mozilla::ipc::RPCChannel::RPCListener>
68 : {
69 : friend class mozilla::plugins::PPluginInstanceParent;
70 :
71 : friend class mozilla::dom::PCrashReporterParent;
72 :
73 : friend class mozilla::plugins::PPluginIdentifierParent;
74 :
75 : protected:
76 : typedef mozilla::ipc::ActorHandle ActorHandle;
77 : typedef mozilla::ipc::Shmem Shmem;
78 : typedef base::FileDescriptor FileDescriptor;
79 : typedef mozilla::dom::NativeThreadId NativeThreadId;
80 : typedef mac_plugin_interposing::NSCursorInfo NSCursorInfo;
81 : typedef mozilla::plugins::PPluginIdentifierParent PPluginIdentifierParent;
82 : typedef mozilla::plugins::PPluginInstanceParent PPluginInstanceParent;
83 : typedef mozilla::plugins::PPluginScriptableObjectParent PPluginScriptableObjectParent;
84 : typedef mozilla::dom::PCrashReporterParent PCrashReporterParent;
85 : typedef base::ProcessId ProcessId;
86 : typedef mozilla::ipc::ProtocolId ProtocolId;
87 : typedef mozilla::ipc::Transport Transport;
88 : typedef mozilla::ipc::TransportDescriptor TransportDescriptor;
89 :
90 : typedef PPluginModule::State State;
91 :
92 : virtual bool
93 : RecvPPluginIdentifierConstructor(
94 : PPluginIdentifierParent* actor,
95 : const nsCString& aString,
96 : const int32_t& aInt,
97 : const bool& temporary);
98 : virtual bool
99 : RecvProcessNativeEventsInRPCCall() = 0;
100 : virtual bool
101 : RecvBackUpXResources(const FileDescriptor& aXSocketFd) = 0;
102 : virtual bool
103 : AnswerNPN_UserAgent(nsCString* userAgent) = 0;
104 : virtual bool
105 : AnswerNPN_GetValue_WithBoolReturn(
106 : const NPNVariable& aVariable,
107 : NPError* aError,
108 : bool* aBoolVal) = 0;
109 : virtual bool
110 : AnswerProcessSomeEvents() = 0;
111 : virtual bool
112 : RecvPluginShowWindow(
113 : const uint32_t& aWindowId,
114 : const bool& aModal,
115 : const int32_t& aX,
116 : const int32_t& aY,
117 : const size_t& aWidth,
118 : const size_t& aHeight) = 0;
119 : virtual bool
120 : RecvPluginHideWindow(const uint32_t& aWindowId) = 0;
121 : virtual bool
122 : RecvSetCursor(const NSCursorInfo& cursorInfo) = 0;
123 : virtual bool
124 : RecvShowCursor(const bool& show) = 0;
125 : virtual bool
126 : RecvPushCursor(const NSCursorInfo& cursorInfo) = 0;
127 : virtual bool
128 : RecvPopCursor() = 0;
129 : virtual bool
130 : RecvGetNativeCursorsSupported(bool* supported) = 0;
131 : virtual bool
132 : RecvNPN_SetException(
133 : PPluginScriptableObjectParent* actor,
134 : const nsCString& message) = 0;
135 : virtual PPluginIdentifierParent*
136 : AllocPPluginIdentifier(
137 : const nsCString& aString,
138 : const int32_t& aInt,
139 : const bool& temporary) = 0;
140 : virtual bool
141 : DeallocPPluginIdentifier(PPluginIdentifierParent* actor) = 0;
142 : virtual PPluginInstanceParent*
143 : AllocPPluginInstance(
144 : const nsCString& aMimeType,
145 : const uint16_t& aMode,
146 : const InfallibleTArray<nsCString>& aNames,
147 : const InfallibleTArray<nsCString>& aValues,
148 : NPError* rv) = 0;
149 : virtual bool
150 : DeallocPPluginInstance(PPluginInstanceParent* actor) = 0;
151 : virtual PCrashReporterParent*
152 : AllocPCrashReporter(
153 : NativeThreadId* tid,
154 : PRUint32* processType) = 0;
155 : virtual bool
156 : DeallocPCrashReporter(PCrashReporterParent* actor) = 0;
157 :
158 : virtual void
159 : ActorDestroy(ActorDestroyReason why);
160 :
161 : virtual void
162 : ProcessingError(Result code);
163 : virtual bool
164 : ShouldContinueFromReplyTimeout();
165 : virtual void
166 : EnteredCxxStack();
167 : virtual void
168 : ExitedCxxStack();
169 : virtual void
170 : EnteredCall();
171 : virtual void
172 : ExitedCall();
173 :
174 : public:
175 : typedef IPC::Message Message;
176 : typedef mozilla::ipc::RPCChannel Channel;
177 : typedef mozilla::ipc::RPCChannel::RPCListener ChannelListener;
178 : typedef base::ProcessHandle ProcessHandle;
179 : typedef mozilla::ipc::AsyncChannel AsyncChannel;
180 : typedef mozilla::ipc::SharedMemory SharedMemory;
181 : typedef mozilla::ipc::Trigger Trigger;
182 :
183 : public:
184 : PPluginModuleParent();
185 :
186 : virtual ~PPluginModuleParent();
187 :
188 : bool
189 : Open(
190 : Channel::Transport* aTransport,
191 : ProcessHandle aOtherProcess,
192 : MessageLoop* aThread = 0,
193 : AsyncChannel::Side aSide = Channel::Unknown);
194 :
195 : bool
196 : Open(
197 : AsyncChannel* aChannel,
198 : MessageLoop* aMessageLoop,
199 : AsyncChannel::Side aSide = Channel::Unknown);
200 :
201 : void
202 : Close();
203 :
204 : void
205 : SetReplyTimeoutMs(int32 aTimeoutMs);
206 :
207 : void
208 : ManagedPPluginInstanceParent(InfallibleTArray<PPluginInstanceParent*>& aArr) const;
209 : const InfallibleTArray<PPluginInstanceParent*>&
210 : ManagedPPluginInstanceParent() const;
211 :
212 : void
213 : ManagedPPluginIdentifierParent(InfallibleTArray<PPluginIdentifierParent*>& aArr) const;
214 : const InfallibleTArray<PPluginIdentifierParent*>&
215 : ManagedPPluginIdentifierParent() const;
216 :
217 : void
218 : ManagedPCrashReporterParent(InfallibleTArray<PCrashReporterParent*>& aArr) const;
219 : const InfallibleTArray<PCrashReporterParent*>&
220 : ManagedPCrashReporterParent() const;
221 :
222 : PPluginModule::State
223 : state();
224 :
225 : PPluginIdentifierParent*
226 : SendPPluginIdentifierConstructor(
227 : const nsCString& aString,
228 : const int32_t& aInt,
229 : const bool& temporary) NS_WARN_UNUSED_RESULT;
230 :
231 : PPluginIdentifierParent*
232 : SendPPluginIdentifierConstructor(
233 : PPluginIdentifierParent* actor,
234 : const nsCString& aString,
235 : const int32_t& aInt,
236 : const bool& temporary) NS_WARN_UNUSED_RESULT;
237 :
238 : bool
239 : SendProcessNativeEventsInRPCCall() NS_WARN_UNUSED_RESULT;
240 :
241 : bool
242 : CallNP_GetEntryPoints(NPError* rv) NS_WARN_UNUSED_RESULT;
243 :
244 : bool
245 : CallNP_Initialize(
246 : const uint32_t& aFlags,
247 : NPError* rv) NS_WARN_UNUSED_RESULT;
248 :
249 : PPluginInstanceParent*
250 : CallPPluginInstanceConstructor(
251 : const nsCString& aMimeType,
252 : const uint16_t& aMode,
253 : const InfallibleTArray<nsCString>& aNames,
254 : const InfallibleTArray<nsCString>& aValues,
255 : NPError* rv) NS_WARN_UNUSED_RESULT;
256 :
257 : PPluginInstanceParent*
258 : CallPPluginInstanceConstructor(
259 : PPluginInstanceParent* actor,
260 : const nsCString& aMimeType,
261 : const uint16_t& aMode,
262 : const InfallibleTArray<nsCString>& aNames,
263 : const InfallibleTArray<nsCString>& aValues,
264 : NPError* rv) NS_WARN_UNUSED_RESULT;
265 :
266 : bool
267 : CallNP_Shutdown(NPError* rv) NS_WARN_UNUSED_RESULT;
268 :
269 : bool
270 : CallOptionalFunctionsSupported(
271 : bool* aURLRedirectNotify,
272 : bool* aClearSiteData,
273 : bool* aGetSitesWithData) NS_WARN_UNUSED_RESULT;
274 :
275 : bool
276 : CallNPP_ClearSiteData(
277 : const nsCString& site,
278 : const uint64_t& flags,
279 : const uint64_t& maxAge,
280 : NPError* rv) NS_WARN_UNUSED_RESULT;
281 :
282 : bool
283 : CallNPP_GetSitesWithData(InfallibleTArray<nsCString>* sites) NS_WARN_UNUSED_RESULT;
284 :
285 : bool
286 : SendSetAudioSessionData(
287 : const nsID& aID,
288 : const nsString& aDisplayName,
289 : const nsString& aIconPath) NS_WARN_UNUSED_RESULT;
290 :
291 : bool
292 : SendSetParentHangTimeout(const uint32_t& seconds) NS_WARN_UNUSED_RESULT;
293 :
294 : PCrashReporterParent*
295 : CallPCrashReporterConstructor(
296 : NativeThreadId* tid,
297 : PRUint32* processType) NS_WARN_UNUSED_RESULT;
298 :
299 : PCrashReporterParent*
300 : CallPCrashReporterConstructor(
301 : PCrashReporterParent* actor,
302 : NativeThreadId* tid,
303 : PRUint32* processType) NS_WARN_UNUSED_RESULT;
304 :
305 : virtual int32
306 : Register(ChannelListener* aRouted);
307 : virtual int32
308 : RegisterID(
309 : ChannelListener* aRouted,
310 : int32 aId);
311 : virtual ChannelListener*
312 : Lookup(int32 aId);
313 : virtual void
314 : Unregister(int32 aId);
315 : virtual void
316 : RemoveManagee(
317 : int32 aProtocolId,
318 : ChannelListener* aListener);
319 : virtual Shmem::SharedMemory*
320 : CreateSharedMemory(
321 : size_t aSize,
322 : Shmem::SharedMemory::SharedMemoryType type,
323 : bool unsafe,
324 : Shmem::id_t* aId);
325 : virtual bool
326 : AdoptSharedMemory(
327 : Shmem::SharedMemory* segment,
328 : Shmem::id_t* aId);
329 : virtual Shmem::SharedMemory*
330 : LookupSharedMemory(Shmem::id_t aId);
331 : virtual bool
332 : IsTrackingSharedMemory(Shmem::SharedMemory* segment);
333 : virtual bool
334 : DestroySharedMemory(Shmem& aShmem);
335 : virtual ProcessHandle
336 : OtherProcess() const;
337 : virtual AsyncChannel*
338 : GetIPCChannel();
339 :
340 : virtual Result
341 : OnMessageReceived(const Message& __msg);
342 :
343 : virtual Result
344 : OnMessageReceived(
345 : const Message& __msg,
346 : Message*& __reply);
347 :
348 : virtual Result
349 : OnCallReceived(
350 : const Message& __msg,
351 : Message*& __reply);
352 :
353 : void
354 : OnProcessingError(Result code);
355 :
356 : bool
357 : OnReplyTimeout();
358 :
359 : void
360 : OnEnteredCxxStack();
361 : void
362 : OnExitedCxxStack();
363 : void
364 : OnEnteredCall();
365 : void
366 : OnExitedCall();
367 : bool
368 : IsOnCxxStack() const;
369 : void
370 : FlushPendingRPCQueue();
371 :
372 : void
373 : OnChannelClose();
374 :
375 : void
376 : OnChannelError();
377 :
378 : void
379 : OnChannelConnected(int32 pid);
380 :
381 : // Methods for managing shmem
382 : bool
383 : AllocShmem(
384 : size_t aSize,
385 : Shmem::SharedMemory::SharedMemoryType aType,
386 : Shmem* aMem);
387 :
388 : bool
389 : AllocUnsafeShmem(
390 : size_t aSize,
391 : Shmem::SharedMemory::SharedMemoryType aType,
392 : Shmem* aMem);
393 :
394 : bool
395 : AdoptShmem(
396 : Shmem& aMem,
397 : Shmem* aOutMem);
398 :
399 : bool
400 : DeallocShmem(Shmem& aMem);
401 :
402 : void
403 : ProcessNativeEventsInRPCCall();
404 :
405 : void
406 : SetOtherProcess(ProcessHandle aOtherProcess);
407 :
408 : protected:
409 : base::ProcessId
410 : OtherSidePID() const;
411 :
412 : bool
413 : TakeMinidump(nsILocalFile** aDump) const;
414 :
415 : bool
416 : BlockChild();
417 : bool
418 : UnblockChild();
419 :
420 : private:
421 : virtual void
422 : FatalError(const char* const msg) const;
423 :
424 : void
425 : DestroySubtree(ActorDestroyReason why);
426 :
427 : void
428 : DeallocSubtree();
429 :
430 : void
431 : DeallocShmems();
432 :
433 : template<typename T>
434 : void
435 0 : Write(
436 : const T& __v,
437 : Message* __msg)
438 : {
439 0 : IPC::WriteParam(__msg, __v);
440 0 : }
441 :
442 : template<typename T>
443 : bool
444 0 : Read(
445 : T* __v,
446 : const Message* __msg,
447 : void** __iter)
448 : {
449 0 : return IPC::ReadParam(__msg, __iter, __v);
450 : }
451 :
452 : void
453 : Write(
454 : PPluginScriptableObjectParent* __v,
455 : Message* __msg,
456 : bool __nullable);
457 :
458 : bool
459 : Read(
460 : PPluginScriptableObjectParent** __v,
461 : const Message* __msg,
462 : void** __iter,
463 : bool __nullable) NS_WARN_UNUSED_RESULT;
464 :
465 : void
466 : Write(
467 : PPluginInstanceParent* __v,
468 : Message* __msg,
469 : bool __nullable);
470 :
471 : bool
472 : Read(
473 : PPluginInstanceParent** __v,
474 : const Message* __msg,
475 : void** __iter,
476 : bool __nullable) NS_WARN_UNUSED_RESULT;
477 :
478 : void
479 : Write(
480 : PCrashReporterParent* __v,
481 : Message* __msg,
482 : bool __nullable);
483 :
484 : bool
485 : Read(
486 : PCrashReporterParent** __v,
487 : const Message* __msg,
488 : void** __iter,
489 : bool __nullable) NS_WARN_UNUSED_RESULT;
490 :
491 : void
492 : Write(
493 : PPluginIdentifierParent* __v,
494 : Message* __msg,
495 : bool __nullable);
496 :
497 : bool
498 : Read(
499 : PPluginIdentifierParent** __v,
500 : const Message* __msg,
501 : void** __iter,
502 : bool __nullable) NS_WARN_UNUSED_RESULT;
503 :
504 : Channel mChannel;
505 : IDMap<ChannelListener> mActorMap;
506 : int32 mLastRouteId;
507 : ProcessHandle mOtherProcess;
508 : IDMap<Shmem::SharedMemory> mShmemMap;
509 : Shmem::id_t mLastShmemId;
510 : State mState;
511 : // Sorted by pointer value
512 : InfallibleTArray<PPluginInstanceParent*> mManagedPPluginInstanceParent;
513 : // Sorted by pointer value
514 : InfallibleTArray<PPluginIdentifierParent*> mManagedPPluginIdentifierParent;
515 : // Sorted by pointer value
516 : InfallibleTArray<PCrashReporterParent*> mManagedPCrashReporterParent;
517 : };
518 :
519 :
520 : } // namespace plugins
521 : } // namespace mozilla
522 :
523 : #if 0
524 :
525 : //-----------------------------------------------------------------------------
526 : // Skeleton implementation of abstract actor class
527 :
528 : // Header file contents
529 : namespace mozilla {
530 : namespace plugins {
531 : class PluginModuleParent :
532 : public PPluginModuleParent
533 : {
534 : virtual bool
535 : RecvProcessNativeEventsInRPCCall();
536 :
537 : virtual bool
538 : RecvBackUpXResources(const FileDescriptor& aXSocketFd);
539 :
540 : virtual bool
541 : AnswerNPN_UserAgent(nsCString* userAgent);
542 :
543 : virtual bool
544 : AnswerNPN_GetValue_WithBoolReturn(
545 : const NPNVariable& aVariable,
546 : NPError* aError,
547 : bool* aBoolVal);
548 :
549 : virtual bool
550 : AnswerProcessSomeEvents();
551 :
552 : virtual bool
553 : RecvPluginShowWindow(
554 : const uint32_t& aWindowId,
555 : const bool& aModal,
556 : const int32_t& aX,
557 : const int32_t& aY,
558 : const size_t& aWidth,
559 : const size_t& aHeight);
560 :
561 : virtual bool
562 : RecvPluginHideWindow(const uint32_t& aWindowId);
563 :
564 : virtual bool
565 : RecvSetCursor(const NSCursorInfo& cursorInfo);
566 :
567 : virtual bool
568 : RecvShowCursor(const bool& show);
569 :
570 : virtual bool
571 : RecvPushCursor(const NSCursorInfo& cursorInfo);
572 :
573 : virtual bool
574 : RecvPopCursor();
575 :
576 : virtual bool
577 : RecvGetNativeCursorsSupported(bool* supported);
578 :
579 : virtual bool
580 : RecvNPN_SetException(
581 : PPluginScriptableObjectParent* actor,
582 : const nsCString& message);
583 :
584 : virtual PPluginIdentifierParent*
585 : AllocPPluginIdentifier(
586 : const nsCString& aString,
587 : const int32_t& aInt,
588 : const bool& temporary);
589 :
590 : virtual bool
591 : DeallocPPluginIdentifier(PPluginIdentifierParent* actor);
592 :
593 : virtual PPluginInstanceParent*
594 : AllocPPluginInstance(
595 : const nsCString& aMimeType,
596 : const uint16_t& aMode,
597 : const InfallibleTArray<nsCString>& aNames,
598 : const InfallibleTArray<nsCString>& aValues,
599 : NPError* rv);
600 :
601 : virtual bool
602 : DeallocPPluginInstance(PPluginInstanceParent* actor);
603 :
604 : virtual PCrashReporterParent*
605 : AllocPCrashReporter(
606 : NativeThreadId* tid,
607 : PRUint32* processType);
608 :
609 : virtual bool
610 : DeallocPCrashReporter(PCrashReporterParent* actor);
611 :
612 : PluginModuleParent();
613 : virtual ~PluginModuleParent();
614 : };
615 : } // namespace plugins
616 : } // namespace mozilla
617 :
618 :
619 : // C++ file contents
620 : namespace mozilla {
621 : namespace plugins {
622 : bool
623 : PluginModuleParent::RecvProcessNativeEventsInRPCCall()
624 : {
625 : return false;
626 : }
627 :
628 : bool
629 : PluginModuleParent::RecvBackUpXResources(const FileDescriptor& aXSocketFd)
630 : {
631 : return false;
632 : }
633 :
634 : bool
635 : PluginModuleParent::AnswerNPN_UserAgent(nsCString* userAgent)
636 : {
637 : return false;
638 : }
639 :
640 : bool
641 : PluginModuleParent::AnswerNPN_GetValue_WithBoolReturn(
642 : const NPNVariable& aVariable,
643 : NPError* aError,
644 : bool* aBoolVal)
645 : {
646 : return false;
647 : }
648 :
649 : bool
650 : PluginModuleParent::AnswerProcessSomeEvents()
651 : {
652 : return false;
653 : }
654 :
655 : bool
656 : PluginModuleParent::RecvPluginShowWindow(
657 : const uint32_t& aWindowId,
658 : const bool& aModal,
659 : const int32_t& aX,
660 : const int32_t& aY,
661 : const size_t& aWidth,
662 : const size_t& aHeight)
663 : {
664 : return false;
665 : }
666 :
667 : bool
668 : PluginModuleParent::RecvPluginHideWindow(const uint32_t& aWindowId)
669 : {
670 : return false;
671 : }
672 :
673 : bool
674 : PluginModuleParent::RecvSetCursor(const NSCursorInfo& cursorInfo)
675 : {
676 : return false;
677 : }
678 :
679 : bool
680 : PluginModuleParent::RecvShowCursor(const bool& show)
681 : {
682 : return false;
683 : }
684 :
685 : bool
686 : PluginModuleParent::RecvPushCursor(const NSCursorInfo& cursorInfo)
687 : {
688 : return false;
689 : }
690 :
691 : bool
692 : PluginModuleParent::RecvPopCursor()
693 : {
694 : return false;
695 : }
696 :
697 : bool
698 : PluginModuleParent::RecvGetNativeCursorsSupported(bool* supported)
699 : {
700 : return false;
701 : }
702 :
703 : bool
704 : PluginModuleParent::RecvNPN_SetException(
705 : PPluginScriptableObjectParent* actor,
706 : const nsCString& message)
707 : {
708 : return false;
709 : }
710 :
711 : PPluginIdentifierParent*
712 : PluginModuleParent::AllocPPluginIdentifier(
713 : const nsCString& aString,
714 : const int32_t& aInt,
715 : const bool& temporary)
716 : {
717 : return 0;
718 : }
719 :
720 : bool
721 : PluginModuleParent::DeallocPPluginIdentifier(PPluginIdentifierParent* actor)
722 : {
723 : return false;
724 : }
725 :
726 : PPluginInstanceParent*
727 : PluginModuleParent::AllocPPluginInstance(
728 : const nsCString& aMimeType,
729 : const uint16_t& aMode,
730 : const InfallibleTArray<nsCString>& aNames,
731 : const InfallibleTArray<nsCString>& aValues,
732 : NPError* rv)
733 : {
734 : return 0;
735 : }
736 :
737 : bool
738 : PluginModuleParent::DeallocPPluginInstance(PPluginInstanceParent* actor)
739 : {
740 : return false;
741 : }
742 :
743 : PCrashReporterParent*
744 : PluginModuleParent::AllocPCrashReporter(
745 : NativeThreadId* tid,
746 : PRUint32* processType)
747 : {
748 : return 0;
749 : }
750 :
751 : bool
752 : PluginModuleParent::DeallocPCrashReporter(PCrashReporterParent* actor)
753 : {
754 : return false;
755 : }
756 :
757 : PluginModuleParent::PluginModuleParent()
758 : {
759 : MOZ_COUNT_CTOR(PluginModuleParent);
760 : }
761 :
762 : PluginModuleParent::~PluginModuleParent()
763 : {
764 : MOZ_COUNT_DTOR(PluginModuleParent);
765 : }
766 :
767 : } // namespace plugins
768 : } // namespace mozilla
769 : #endif // if 0
770 :
771 : #endif // ifndef PPluginModuleParent_h
|