michael@0: #ifndef mozilla__ipdltest_TestRaceDeferral_h michael@0: #define mozilla__ipdltest_TestRaceDeferral_h 1 michael@0: michael@0: #include "mozilla/_ipdltest/IPDLUnitTests.h" michael@0: michael@0: #include "mozilla/_ipdltest/PTestRaceDeferralParent.h" michael@0: #include "mozilla/_ipdltest/PTestRaceDeferralChild.h" michael@0: michael@0: namespace mozilla { michael@0: namespace _ipdltest { michael@0: michael@0: class TestRaceDeferralParent : michael@0: public PTestRaceDeferralParent michael@0: { michael@0: public: michael@0: TestRaceDeferralParent(); michael@0: virtual ~TestRaceDeferralParent(); 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: void Test1(); michael@0: michael@0: virtual bool AnswerLose() MOZ_OVERRIDE; michael@0: michael@0: virtual mozilla::ipc::RacyInterruptPolicy michael@0: MediateInterruptRace(const Message& parent, const Message& child) 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: passed("ok"); michael@0: QuitParent(); michael@0: } michael@0: michael@0: bool mProcessedLose; michael@0: }; michael@0: michael@0: michael@0: class TestRaceDeferralChild : michael@0: public PTestRaceDeferralChild michael@0: { michael@0: public: michael@0: TestRaceDeferralChild(); michael@0: virtual ~TestRaceDeferralChild(); michael@0: michael@0: protected: michael@0: virtual bool RecvStartRace() MOZ_OVERRIDE; michael@0: michael@0: virtual bool AnswerWin() MOZ_OVERRIDE; michael@0: michael@0: virtual bool AnswerRpc() MOZ_OVERRIDE; michael@0: michael@0: virtual mozilla::ipc::RacyInterruptPolicy michael@0: MediateInterruptRace(const Message& parent, const Message& child) 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_TestRaceDeferral_h