michael@0: #include "TestSyncHang.h" michael@0: #include "mozilla/ipc/GeckoChildProcessHost.h" michael@0: michael@0: #include "IPDLUnitTests.h" // fail etc. michael@0: michael@0: using std::vector; michael@0: using std::string; michael@0: michael@0: namespace mozilla { michael@0: namespace _ipdltest { michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: // parent michael@0: michael@0: mozilla::ipc::GeckoChildProcessHost* gSyncHangSubprocess; michael@0: michael@0: TestSyncHangParent::TestSyncHangParent() michael@0: { michael@0: MOZ_COUNT_CTOR(TestSyncHangParent); michael@0: } michael@0: michael@0: TestSyncHangParent::~TestSyncHangParent() michael@0: { michael@0: MOZ_COUNT_DTOR(TestSyncHangParent); michael@0: } michael@0: michael@0: void michael@0: DeleteSyncHangSubprocess(MessageLoop* uiLoop) michael@0: { michael@0: delete gSyncHangSubprocess; michael@0: } michael@0: michael@0: void michael@0: DeferredSyncHangParentShutdown() michael@0: { michael@0: // ping to DeleteSubprocess michael@0: XRE_GetIOMessageLoop()->PostTask( michael@0: FROM_HERE, michael@0: NewRunnableFunction(DeleteSyncHangSubprocess, MessageLoop::current())); michael@0: } michael@0: michael@0: void michael@0: TestSyncHangParent::Main() michael@0: { michael@0: vector args; michael@0: args.push_back("fake/path"); michael@0: gSyncHangSubprocess = new mozilla::ipc::GeckoChildProcessHost(GeckoProcessType_Plugin); michael@0: bool launched = gSyncHangSubprocess->SyncLaunch(args, 2); michael@0: if (launched) michael@0: fail("Calling SyncLaunch with an invalid path should return false"); michael@0: michael@0: MessageLoop::current()->PostTask( michael@0: FROM_HERE, NewRunnableFunction(DeferredSyncHangParentShutdown)); michael@0: Close(); michael@0: } michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: // child michael@0: michael@0: TestSyncHangChild::TestSyncHangChild() michael@0: { michael@0: MOZ_COUNT_CTOR(TestSyncHangChild); michael@0: } michael@0: michael@0: TestSyncHangChild::~TestSyncHangChild() michael@0: { michael@0: MOZ_COUNT_DTOR(TestSyncHangChild); michael@0: } michael@0: michael@0: } // namespace _ipdltest michael@0: } // namespace mozilla