diff options
Diffstat (limited to 'ipc/ipdl/test/cxx/TestSelfManageRoot.h')
-rw-r--r-- | ipc/ipdl/test/cxx/TestSelfManageRoot.h | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/ipc/ipdl/test/cxx/TestSelfManageRoot.h b/ipc/ipdl/test/cxx/TestSelfManageRoot.h new file mode 100644 index 0000000000..5cea09b10d --- /dev/null +++ b/ipc/ipdl/test/cxx/TestSelfManageRoot.h @@ -0,0 +1,117 @@ +#ifndef mozilla__ipdltest_TestSelfManageRoot_h +#define mozilla__ipdltest_TestSelfManageRoot_h 1 + +#include "mozilla/_ipdltest/IPDLUnitTests.h" + +#include "mozilla/_ipdltest/PTestSelfManageRootParent.h" +#include "mozilla/_ipdltest/PTestSelfManageRootChild.h" +#include "mozilla/_ipdltest/PTestSelfManageParent.h" +#include "mozilla/_ipdltest/PTestSelfManageChild.h" + +namespace mozilla { +namespace _ipdltest { + +//----------------------------------------------------------------------------- +// Parent side + +class TestSelfManageParent : public PTestSelfManageParent { + friend class PTestSelfManageParent; + + public: + MOZ_COUNTED_DEFAULT_CTOR(TestSelfManageParent) + MOZ_COUNTED_DTOR_OVERRIDE(TestSelfManageParent) + + ActorDestroyReason mWhy; + + protected: + PTestSelfManageParent* AllocPTestSelfManageParent() { + return new TestSelfManageParent(); + } + + bool DeallocPTestSelfManageParent(PTestSelfManageParent* a) { return true; } + + virtual void ActorDestroy(ActorDestroyReason why) override { mWhy = why; } +}; + +class TestSelfManageRootParent : public PTestSelfManageRootParent { + friend class PTestSelfManageRootParent; + + public: + MOZ_COUNTED_DEFAULT_CTOR(TestSelfManageRootParent) + virtual ~TestSelfManageRootParent() { + MOZ_COUNT_DTOR(TestSelfManageRootParent); + } + + static bool RunTestInProcesses() { return true; } + static bool RunTestInThreads() { return true; } + + void Main(); + + protected: + PTestSelfManageParent* AllocPTestSelfManageParent() { + return new TestSelfManageParent(); + } + + bool DeallocPTestSelfManageParent(PTestSelfManageParent* a) { return true; } + + virtual void ActorDestroy(ActorDestroyReason why) override { + if (NormalShutdown != why) fail("unexpected destruction!"); + passed("ok"); + QuitParent(); + } +}; + +//----------------------------------------------------------------------------- +// Child side + +class TestSelfManageChild : public PTestSelfManageChild { + friend class PTestSelfManageChild; + + public: + MOZ_COUNTED_DEFAULT_CTOR(TestSelfManageChild) + MOZ_COUNTED_DTOR_OVERRIDE(TestSelfManageChild) + + protected: + PTestSelfManageChild* AllocPTestSelfManageChild() { + return new TestSelfManageChild(); + } + + bool DeallocPTestSelfManageChild(PTestSelfManageChild* a) { + delete a; + return true; + } + + virtual void ActorDestroy(ActorDestroyReason why) override {} +}; + +class TestSelfManageRootChild : public PTestSelfManageRootChild { + friend class PTestSelfManageRootChild; + + public: + MOZ_COUNTED_DEFAULT_CTOR(TestSelfManageRootChild) + virtual ~TestSelfManageRootChild() { + MOZ_COUNT_DTOR(TestSelfManageRootChild); + } + + void Main(); + + protected: + PTestSelfManageChild* AllocPTestSelfManageChild() { + return new TestSelfManageChild(); + } + + bool DeallocPTestSelfManageChild(PTestSelfManageChild* a) { + delete a; + return true; + } + + virtual void ActorDestroy(ActorDestroyReason why) override { + if (NormalShutdown != why) fail("unexpected destruction!"); + QuitChild(); + } +}; + +} // namespace _ipdltest +} // namespace mozilla + +#endif // ifndef mozilla__ipdltest_TestSelfManageRoot_h |