michael@0: #ifndef mozilla__ipdltest_TestRPC_h michael@0: #define mozilla__ipdltest_TestRPC_h 1 michael@0: michael@0: #include "mozilla/_ipdltest/IPDLUnitTests.h" michael@0: michael@0: #include "mozilla/_ipdltest/PTestRPCParent.h" michael@0: #include "mozilla/_ipdltest/PTestRPCChild.h" michael@0: michael@0: namespace mozilla { michael@0: namespace _ipdltest { michael@0: michael@0: michael@0: class TestRPCParent : michael@0: public PTestRPCParent michael@0: { michael@0: public: michael@0: TestRPCParent(); michael@0: virtual ~TestRPCParent(); 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: bool AnswerTest1_Start(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest1_InnerEvent(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool RecvTest2_Start() MOZ_OVERRIDE; michael@0: bool AnswerTest2_OutOfOrder() MOZ_OVERRIDE; michael@0: bool RecvTest3_Start(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest3_InnerEvent(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest4_Start(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest4_Inner(uint32_t* aResult) MOZ_OVERRIDE; 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: if (!reentered_) michael@0: fail("never processed raced RPC call!"); michael@0: if (!resolved_first_cpow_) michael@0: fail("never resolved first CPOW!"); michael@0: passed("ok"); michael@0: QuitParent(); michael@0: } michael@0: michael@0: private: michael@0: bool reentered_; michael@0: bool resolved_first_cpow_; michael@0: }; michael@0: michael@0: michael@0: class TestRPCChild : michael@0: public PTestRPCChild michael@0: { michael@0: public: michael@0: TestRPCChild(); michael@0: virtual ~TestRPCChild(); michael@0: michael@0: bool RecvStart() MOZ_OVERRIDE; michael@0: bool AnswerTest1_InnerQuery(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest1_NoReenter(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest2_FirstUrgent() MOZ_OVERRIDE; michael@0: bool AnswerTest2_SecondUrgent() MOZ_OVERRIDE; michael@0: bool AnswerTest3_WakeUp(uint32_t* aResult) MOZ_OVERRIDE; michael@0: bool AnswerTest4_WakeUp(uint32_t* aResult) MOZ_OVERRIDE; 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: michael@0: } // namespace _ipdltest michael@0: } // namespace mozilla michael@0: michael@0: michael@0: #endif // ifndef mozilla__ipdltest_TestRPC_h