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