1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/ipc/ipdl/test/cxx/TestFailedCtor.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,136 @@ 1.4 +#ifndef mozilla_ipdltest_TestFailedCtor_h 1.5 +#define mozilla_ipdltest_TestFailedCtor_h 1.6 + 1.7 +#include "mozilla/_ipdltest/IPDLUnitTests.h" 1.8 + 1.9 +#include "mozilla/_ipdltest/PTestFailedCtorParent.h" 1.10 +#include "mozilla/_ipdltest/PTestFailedCtorChild.h" 1.11 + 1.12 +#include "mozilla/_ipdltest/PTestFailedCtorSubParent.h" 1.13 +#include "mozilla/_ipdltest/PTestFailedCtorSubChild.h" 1.14 + 1.15 +#include "mozilla/_ipdltest/PTestFailedCtorSubsubParent.h" 1.16 +#include "mozilla/_ipdltest/PTestFailedCtorSubsubChild.h" 1.17 + 1.18 +namespace mozilla { 1.19 +namespace _ipdltest { 1.20 + 1.21 +//----------------------------------------------------------------------------- 1.22 +// Top-level 1.23 +// 1.24 +class TestFailedCtorParent : 1.25 + public PTestFailedCtorParent 1.26 +{ 1.27 +public: 1.28 + TestFailedCtorParent() { } 1.29 + virtual ~TestFailedCtorParent() { } 1.30 + 1.31 + static bool RunTestInProcesses() { return true; } 1.32 + 1.33 + // FIXME/bug 703322 Disabled because child calls exit() to end 1.34 + // test, not clear how to handle failed ctor in 1.35 + // threaded mode. 1.36 + static bool RunTestInThreads() { return false; } 1.37 + 1.38 + void Main(); 1.39 + 1.40 +protected: 1.41 + virtual PTestFailedCtorSubParent* AllocPTestFailedCtorSubParent() MOZ_OVERRIDE; 1.42 + virtual bool DeallocPTestFailedCtorSubParent(PTestFailedCtorSubParent* actor) MOZ_OVERRIDE; 1.43 + 1.44 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE 1.45 + { 1.46 + if (AbnormalShutdown != why) 1.47 + fail("unexpected destruction!"); 1.48 + passed("ok"); 1.49 + QuitParent(); 1.50 + } 1.51 +}; 1.52 + 1.53 + 1.54 +class TestFailedCtorChild : 1.55 + public PTestFailedCtorChild 1.56 +{ 1.57 +public: 1.58 + TestFailedCtorChild() { } 1.59 + virtual ~TestFailedCtorChild() { } 1.60 + 1.61 +protected: 1.62 + virtual PTestFailedCtorSubChild* AllocPTestFailedCtorSubChild() MOZ_OVERRIDE; 1.63 + 1.64 + virtual bool AnswerPTestFailedCtorSubConstructor(PTestFailedCtorSubChild* actor) MOZ_OVERRIDE; 1.65 + 1.66 + virtual bool DeallocPTestFailedCtorSubChild(PTestFailedCtorSubChild* actor) MOZ_OVERRIDE; 1.67 + 1.68 + virtual void ProcessingError(Result what) MOZ_OVERRIDE; 1.69 + 1.70 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE 1.71 + { 1.72 + fail("should have _exit()ed"); 1.73 + } 1.74 +}; 1.75 + 1.76 + 1.77 +//----------------------------------------------------------------------------- 1.78 +// First descendent 1.79 +// 1.80 +class TestFailedCtorSubsub; 1.81 + 1.82 +class TestFailedCtorSubParent : 1.83 + public PTestFailedCtorSubParent 1.84 +{ 1.85 +public: 1.86 + TestFailedCtorSubParent() : mOne(nullptr), mTwo(nullptr), mThree(nullptr) { } 1.87 + virtual ~TestFailedCtorSubParent(); 1.88 + 1.89 +protected: 1.90 + virtual PTestFailedCtorSubsubParent* AllocPTestFailedCtorSubsubParent() MOZ_OVERRIDE; 1.91 + 1.92 + virtual bool DeallocPTestFailedCtorSubsubParent(PTestFailedCtorSubsubParent* actor) MOZ_OVERRIDE; 1.93 + virtual bool RecvSync() MOZ_OVERRIDE { return true; } 1.94 + 1.95 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE; 1.96 + 1.97 + TestFailedCtorSubsub* mOne; 1.98 + TestFailedCtorSubsub* mTwo; 1.99 + TestFailedCtorSubsub* mThree; 1.100 +}; 1.101 + 1.102 + 1.103 +class TestFailedCtorSubChild : 1.104 + public PTestFailedCtorSubChild 1.105 +{ 1.106 +public: 1.107 + TestFailedCtorSubChild() { } 1.108 + virtual ~TestFailedCtorSubChild() { } 1.109 + 1.110 +protected: 1.111 + virtual PTestFailedCtorSubsubChild* AllocPTestFailedCtorSubsubChild() MOZ_OVERRIDE; 1.112 + virtual bool DeallocPTestFailedCtorSubsubChild(PTestFailedCtorSubsubChild* actor) MOZ_OVERRIDE; 1.113 + 1.114 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE; 1.115 +}; 1.116 + 1.117 + 1.118 +//----------------------------------------------------------------------------- 1.119 +// Grand-descendent 1.120 +// 1.121 +class TestFailedCtorSubsub : 1.122 + public PTestFailedCtorSubsubParent, 1.123 + public PTestFailedCtorSubsubChild 1.124 +{ 1.125 +public: 1.126 + TestFailedCtorSubsub() : mWhy(ActorDestroyReason(-1)), mDealloced(false) {} 1.127 + virtual ~TestFailedCtorSubsub() {} 1.128 + 1.129 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE { mWhy = why; } 1.130 + 1.131 + ActorDestroyReason mWhy; 1.132 + bool mDealloced; 1.133 +}; 1.134 + 1.135 + 1.136 +} 1.137 +} 1.138 + 1.139 +#endif // ifndef mozilla_ipdltest_TestFailedCtor_h