ipc/ipdl/test/cxx/TestFailedCtor.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 #ifndef mozilla_ipdltest_TestFailedCtor_h
michael@0 2 #define mozilla_ipdltest_TestFailedCtor_h
michael@0 3
michael@0 4 #include "mozilla/_ipdltest/IPDLUnitTests.h"
michael@0 5
michael@0 6 #include "mozilla/_ipdltest/PTestFailedCtorParent.h"
michael@0 7 #include "mozilla/_ipdltest/PTestFailedCtorChild.h"
michael@0 8
michael@0 9 #include "mozilla/_ipdltest/PTestFailedCtorSubParent.h"
michael@0 10 #include "mozilla/_ipdltest/PTestFailedCtorSubChild.h"
michael@0 11
michael@0 12 #include "mozilla/_ipdltest/PTestFailedCtorSubsubParent.h"
michael@0 13 #include "mozilla/_ipdltest/PTestFailedCtorSubsubChild.h"
michael@0 14
michael@0 15 namespace mozilla {
michael@0 16 namespace _ipdltest {
michael@0 17
michael@0 18 //-----------------------------------------------------------------------------
michael@0 19 // Top-level
michael@0 20 //
michael@0 21 class TestFailedCtorParent :
michael@0 22 public PTestFailedCtorParent
michael@0 23 {
michael@0 24 public:
michael@0 25 TestFailedCtorParent() { }
michael@0 26 virtual ~TestFailedCtorParent() { }
michael@0 27
michael@0 28 static bool RunTestInProcesses() { return true; }
michael@0 29
michael@0 30 // FIXME/bug 703322 Disabled because child calls exit() to end
michael@0 31 // test, not clear how to handle failed ctor in
michael@0 32 // threaded mode.
michael@0 33 static bool RunTestInThreads() { return false; }
michael@0 34
michael@0 35 void Main();
michael@0 36
michael@0 37 protected:
michael@0 38 virtual PTestFailedCtorSubParent* AllocPTestFailedCtorSubParent() MOZ_OVERRIDE;
michael@0 39 virtual bool DeallocPTestFailedCtorSubParent(PTestFailedCtorSubParent* actor) MOZ_OVERRIDE;
michael@0 40
michael@0 41 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE
michael@0 42 {
michael@0 43 if (AbnormalShutdown != why)
michael@0 44 fail("unexpected destruction!");
michael@0 45 passed("ok");
michael@0 46 QuitParent();
michael@0 47 }
michael@0 48 };
michael@0 49
michael@0 50
michael@0 51 class TestFailedCtorChild :
michael@0 52 public PTestFailedCtorChild
michael@0 53 {
michael@0 54 public:
michael@0 55 TestFailedCtorChild() { }
michael@0 56 virtual ~TestFailedCtorChild() { }
michael@0 57
michael@0 58 protected:
michael@0 59 virtual PTestFailedCtorSubChild* AllocPTestFailedCtorSubChild() MOZ_OVERRIDE;
michael@0 60
michael@0 61 virtual bool AnswerPTestFailedCtorSubConstructor(PTestFailedCtorSubChild* actor) MOZ_OVERRIDE;
michael@0 62
michael@0 63 virtual bool DeallocPTestFailedCtorSubChild(PTestFailedCtorSubChild* actor) MOZ_OVERRIDE;
michael@0 64
michael@0 65 virtual void ProcessingError(Result what) MOZ_OVERRIDE;
michael@0 66
michael@0 67 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE
michael@0 68 {
michael@0 69 fail("should have _exit()ed");
michael@0 70 }
michael@0 71 };
michael@0 72
michael@0 73
michael@0 74 //-----------------------------------------------------------------------------
michael@0 75 // First descendent
michael@0 76 //
michael@0 77 class TestFailedCtorSubsub;
michael@0 78
michael@0 79 class TestFailedCtorSubParent :
michael@0 80 public PTestFailedCtorSubParent
michael@0 81 {
michael@0 82 public:
michael@0 83 TestFailedCtorSubParent() : mOne(nullptr), mTwo(nullptr), mThree(nullptr) { }
michael@0 84 virtual ~TestFailedCtorSubParent();
michael@0 85
michael@0 86 protected:
michael@0 87 virtual PTestFailedCtorSubsubParent* AllocPTestFailedCtorSubsubParent() MOZ_OVERRIDE;
michael@0 88
michael@0 89 virtual bool DeallocPTestFailedCtorSubsubParent(PTestFailedCtorSubsubParent* actor) MOZ_OVERRIDE;
michael@0 90 virtual bool RecvSync() MOZ_OVERRIDE { return true; }
michael@0 91
michael@0 92 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE;
michael@0 93
michael@0 94 TestFailedCtorSubsub* mOne;
michael@0 95 TestFailedCtorSubsub* mTwo;
michael@0 96 TestFailedCtorSubsub* mThree;
michael@0 97 };
michael@0 98
michael@0 99
michael@0 100 class TestFailedCtorSubChild :
michael@0 101 public PTestFailedCtorSubChild
michael@0 102 {
michael@0 103 public:
michael@0 104 TestFailedCtorSubChild() { }
michael@0 105 virtual ~TestFailedCtorSubChild() { }
michael@0 106
michael@0 107 protected:
michael@0 108 virtual PTestFailedCtorSubsubChild* AllocPTestFailedCtorSubsubChild() MOZ_OVERRIDE;
michael@0 109 virtual bool DeallocPTestFailedCtorSubsubChild(PTestFailedCtorSubsubChild* actor) MOZ_OVERRIDE;
michael@0 110
michael@0 111 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE;
michael@0 112 };
michael@0 113
michael@0 114
michael@0 115 //-----------------------------------------------------------------------------
michael@0 116 // Grand-descendent
michael@0 117 //
michael@0 118 class TestFailedCtorSubsub :
michael@0 119 public PTestFailedCtorSubsubParent,
michael@0 120 public PTestFailedCtorSubsubChild
michael@0 121 {
michael@0 122 public:
michael@0 123 TestFailedCtorSubsub() : mWhy(ActorDestroyReason(-1)), mDealloced(false) {}
michael@0 124 virtual ~TestFailedCtorSubsub() {}
michael@0 125
michael@0 126 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE { mWhy = why; }
michael@0 127
michael@0 128 ActorDestroyReason mWhy;
michael@0 129 bool mDealloced;
michael@0 130 };
michael@0 131
michael@0 132
michael@0 133 }
michael@0 134 }
michael@0 135
michael@0 136 #endif // ifndef mozilla_ipdltest_TestFailedCtor_h

mercurial