michael@0: #ifndef mozilla__ipdltest_TestSelfManageRoot_h michael@0: #define mozilla__ipdltest_TestSelfManageRoot_h 1 michael@0: michael@0: #include "mozilla/_ipdltest/IPDLUnitTests.h" michael@0: michael@0: #include "mozilla/_ipdltest/PTestSelfManageRootParent.h" michael@0: #include "mozilla/_ipdltest/PTestSelfManageRootChild.h" michael@0: #include "mozilla/_ipdltest/PTestSelfManageParent.h" michael@0: #include "mozilla/_ipdltest/PTestSelfManageChild.h" michael@0: michael@0: michael@0: namespace mozilla { michael@0: namespace _ipdltest { michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: // Parent side michael@0: michael@0: class TestSelfManageParent : michael@0: public PTestSelfManageParent michael@0: { michael@0: public: michael@0: TestSelfManageParent() { michael@0: MOZ_COUNT_CTOR(TestSelfManageParent); michael@0: } michael@0: virtual ~TestSelfManageParent() { michael@0: MOZ_COUNT_DTOR(TestSelfManageParent); michael@0: } michael@0: michael@0: ActorDestroyReason mWhy; michael@0: michael@0: protected: michael@0: virtual PTestSelfManageParent* AllocPTestSelfManageParent() MOZ_OVERRIDE { michael@0: return new TestSelfManageParent(); michael@0: } michael@0: michael@0: virtual bool DeallocPTestSelfManageParent(PTestSelfManageParent* a) MOZ_OVERRIDE { michael@0: return true; michael@0: } michael@0: michael@0: virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE { michael@0: mWhy = why; michael@0: } michael@0: }; michael@0: michael@0: class TestSelfManageRootParent : michael@0: public PTestSelfManageRootParent michael@0: { michael@0: public: michael@0: TestSelfManageRootParent() { michael@0: MOZ_COUNT_CTOR(TestSelfManageRootParent); michael@0: } michael@0: virtual ~TestSelfManageRootParent() { michael@0: MOZ_COUNT_DTOR(TestSelfManageRootParent); michael@0: } michael@0: michael@0: static bool RunTestInProcesses() { return true; } michael@0: static bool RunTestInThreads() { return true; } michael@0: michael@0: void Main(); michael@0: michael@0: protected: michael@0: virtual PTestSelfManageParent* AllocPTestSelfManageParent() MOZ_OVERRIDE { michael@0: return new TestSelfManageParent(); michael@0: } michael@0: michael@0: virtual bool DeallocPTestSelfManageParent(PTestSelfManageParent* a) MOZ_OVERRIDE { michael@0: return true; michael@0: } michael@0: michael@0: virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE michael@0: { michael@0: if (NormalShutdown != why) michael@0: fail("unexpected destruction!"); michael@0: passed("ok"); michael@0: QuitParent(); michael@0: } michael@0: }; michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: // Child side michael@0: michael@0: class TestSelfManageChild : michael@0: public PTestSelfManageChild michael@0: { michael@0: public: michael@0: TestSelfManageChild() { michael@0: MOZ_COUNT_CTOR(TestSelfManageChild); michael@0: } michael@0: virtual ~TestSelfManageChild() { michael@0: MOZ_COUNT_DTOR(TestSelfManageChild); michael@0: } michael@0: michael@0: protected: michael@0: virtual PTestSelfManageChild* AllocPTestSelfManageChild() MOZ_OVERRIDE { michael@0: return new TestSelfManageChild(); michael@0: } michael@0: michael@0: virtual bool DeallocPTestSelfManageChild(PTestSelfManageChild* a) MOZ_OVERRIDE { michael@0: delete a; michael@0: return true; michael@0: } michael@0: michael@0: virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE { } michael@0: }; michael@0: michael@0: class TestSelfManageRootChild : michael@0: public PTestSelfManageRootChild michael@0: { michael@0: public: michael@0: TestSelfManageRootChild() { michael@0: MOZ_COUNT_CTOR(TestSelfManageRootChild); michael@0: } michael@0: virtual ~TestSelfManageRootChild() { michael@0: MOZ_COUNT_DTOR(TestSelfManageRootChild); michael@0: } michael@0: michael@0: void Main(); michael@0: michael@0: protected: michael@0: virtual PTestSelfManageChild* AllocPTestSelfManageChild() MOZ_OVERRIDE { michael@0: return new TestSelfManageChild(); michael@0: } michael@0: michael@0: virtual bool DeallocPTestSelfManageChild(PTestSelfManageChild* a) MOZ_OVERRIDE { michael@0: delete a; michael@0: return true; michael@0: } michael@0: michael@0: virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE michael@0: { michael@0: if (NormalShutdown != why) michael@0: fail("unexpected destruction!"); michael@0: QuitChild(); michael@0: } michael@0: }; michael@0: michael@0: } // namespace _ipdltest michael@0: } // namespace mozilla michael@0: michael@0: michael@0: #endif // ifndef mozilla__ipdltest_TestSelfManageRoot_h