diff options
Diffstat (limited to 'ipc/ipdl/test/cxx/TestHighestPrio.cpp')
-rw-r--r-- | ipc/ipdl/test/cxx/TestHighestPrio.cpp | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/ipc/ipdl/test/cxx/TestHighestPrio.cpp b/ipc/ipdl/test/cxx/TestHighestPrio.cpp new file mode 100644 index 000000000..524943de4 --- /dev/null +++ b/ipc/ipdl/test/cxx/TestHighestPrio.cpp @@ -0,0 +1,118 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * vim: sw=4 ts=4 et : + */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "TestHighestPrio.h" + +#include "IPDLUnitTests.h" // fail etc. +#if defined(OS_POSIX) +#include <unistd.h> +#else +#include <windows.h> +#endif + +namespace mozilla { +namespace _ipdltest { + +//----------------------------------------------------------------------------- +// parent + +TestHighestPrioParent::TestHighestPrioParent() + : msg_num_(0) +{ + MOZ_COUNT_CTOR(TestHighestPrioParent); +} + +TestHighestPrioParent::~TestHighestPrioParent() +{ + MOZ_COUNT_DTOR(TestHighestPrioParent); +} + +void +TestHighestPrioParent::Main() +{ + if (!SendStart()) + fail("sending Start"); +} + +bool +TestHighestPrioParent::RecvMsg1() +{ + MOZ_ASSERT(msg_num_ == 0); + msg_num_ = 1; + return true; +} + +bool +TestHighestPrioParent::RecvMsg2() +{ + + MOZ_ASSERT(msg_num_ == 1); + msg_num_ = 2; + + if (!SendStartInner()) + fail("sending StartInner"); + + return true; +} + +bool +TestHighestPrioParent::RecvMsg3() +{ + MOZ_ASSERT(msg_num_ == 2); + msg_num_ = 3; + return true; +} + +bool +TestHighestPrioParent::RecvMsg4() +{ + MOZ_ASSERT(msg_num_ == 3); + msg_num_ = 4; + return true; +} + +//----------------------------------------------------------------------------- +// child + + +TestHighestPrioChild::TestHighestPrioChild() +{ + MOZ_COUNT_CTOR(TestHighestPrioChild); +} + +TestHighestPrioChild::~TestHighestPrioChild() +{ + MOZ_COUNT_DTOR(TestHighestPrioChild); +} + +bool +TestHighestPrioChild::RecvStart() +{ + if (!SendMsg1()) + fail("sending Msg1"); + + if (!SendMsg2()) + fail("sending Msg2"); + + Close(); + return true; +} + +bool +TestHighestPrioChild::RecvStartInner() +{ + if (!SendMsg3()) + fail("sending Msg3"); + + if (!SendMsg4()) + fail("sending Msg4"); + + return true; +} + +} // namespace _ipdltest +} // namespace mozilla |