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