michael@0: #include "TestBadActor.h" michael@0: #include "IPDLUnitTests.h" michael@0: #include "mozilla/unused.h" michael@0: michael@0: namespace mozilla { michael@0: namespace _ipdltest { michael@0: michael@0: void michael@0: TestBadActorParent::Main() michael@0: { michael@0: // This test is designed to test a race condition where the child sends us michael@0: // a message on an actor that we've already destroyed. The child process michael@0: // should die, and the parent process should not abort. michael@0: michael@0: PTestBadActorSubParent* child = SendPTestBadActorSubConstructor(); michael@0: if (!child) michael@0: fail("Sending constructor"); michael@0: michael@0: unused << child->Call__delete__(child); michael@0: } michael@0: michael@0: PTestBadActorSubParent* michael@0: TestBadActorParent::AllocPTestBadActorSubParent() michael@0: { michael@0: return new TestBadActorSubParent(); michael@0: } michael@0: michael@0: bool michael@0: TestBadActorSubParent::RecvPing() michael@0: { michael@0: fail("Shouldn't have received ping."); michael@0: return false; michael@0: } michael@0: michael@0: PTestBadActorSubChild* michael@0: TestBadActorChild::AllocPTestBadActorSubChild() michael@0: { michael@0: return new TestBadActorSubChild(); michael@0: } michael@0: michael@0: bool michael@0: TestBadActorChild::RecvPTestBadActorSubConstructor(PTestBadActorSubChild* actor) michael@0: { michael@0: if (!actor->SendPing()) { michael@0: fail("Couldn't send ping to an actor which supposedly isn't dead yet."); michael@0: } michael@0: return true; michael@0: } michael@0: michael@0: } // namespace _ipdltest michael@0: } // namespace mozilla