diff options
Diffstat (limited to 'ipc/ipdl/test/cxx/TestRacyReentry.cpp')
-rw-r--r-- | ipc/ipdl/test/cxx/TestRacyReentry.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/ipc/ipdl/test/cxx/TestRacyReentry.cpp b/ipc/ipdl/test/cxx/TestRacyReentry.cpp new file mode 100644 index 000000000..00996cc39 --- /dev/null +++ b/ipc/ipdl/test/cxx/TestRacyReentry.cpp @@ -0,0 +1,84 @@ +#include "TestRacyReentry.h" + +#include "IPDLUnitTests.h" // fail etc. + +namespace mozilla { +namespace _ipdltest { + +//----------------------------------------------------------------------------- +// parent + +TestRacyReentryParent::TestRacyReentryParent() : mRecvdE(false) +{ + MOZ_COUNT_CTOR(TestRacyReentryParent); +} + +TestRacyReentryParent::~TestRacyReentryParent() +{ + MOZ_COUNT_DTOR(TestRacyReentryParent); +} + +void +TestRacyReentryParent::Main() +{ + if (!SendStart()) + fail("sending Start"); + + if (!SendN()) + fail("sending N"); +} + +bool +TestRacyReentryParent::AnswerE() +{ + if (!mRecvdE) { + mRecvdE = true; + return true; + } + + if (!CallH()) + fail("calling H"); + + return true; +} + +//----------------------------------------------------------------------------- +// child + +TestRacyReentryChild::TestRacyReentryChild() +{ + MOZ_COUNT_CTOR(TestRacyReentryChild); +} + +TestRacyReentryChild::~TestRacyReentryChild() +{ + MOZ_COUNT_DTOR(TestRacyReentryChild); +} + +bool +TestRacyReentryChild::RecvStart() +{ + if (!CallE()) + fail("calling E"); + + Close(); + + return true; +} + +bool +TestRacyReentryChild::RecvN() +{ + if (!CallE()) + fail("calling E"); + return true; +} + +bool +TestRacyReentryChild::AnswerH() +{ + return true; +} + +} // namespace _ipdltest +} // namespace mozilla |