1 #ifndef mozilla__ipdltest_TestShmem_h
2 #define mozilla__ipdltest_TestShmem_h
3 
4 #include "mozilla/_ipdltest/IPDLUnitTests.h"
5 
6 #include "mozilla/_ipdltest/PTestShmemParent.h"
7 #include "mozilla/_ipdltest/PTestShmemChild.h"
8 
9 namespace mozilla {
10 namespace _ipdltest {
11 
12 
13 class TestShmemParent :
14     public PTestShmemParent
15 {
16 public:
TestShmemParent()17     TestShmemParent() { }
~TestShmemParent()18     virtual ~TestShmemParent() { }
19 
RunTestInProcesses()20     static bool RunTestInProcesses() { return true; }
RunTestInThreads()21     static bool RunTestInThreads() { return true; }
22 
23     void Main();
24 
25 protected:
26     virtual mozilla::ipc::IPCResult RecvTake(
27             Shmem&& mem,
28             Shmem&& unsafe,
29             const size_t& expectedSize) override;
30 
ActorDestroy(ActorDestroyReason why)31     virtual void ActorDestroy(ActorDestroyReason why) override
32     {
33         if (NormalShutdown != why)
34             fail("unexpected destruction!");
35         passed("ok");
36         QuitParent();
37     }
38 };
39 
40 
41 class TestShmemChild :
42     public PTestShmemChild
43 {
44 public:
TestShmemChild()45     TestShmemChild() { }
~TestShmemChild()46     virtual ~TestShmemChild() { }
47 
48 protected:
49     virtual mozilla::ipc::IPCResult RecvGive(
50             Shmem&& mem,
51             Shmem&& unsafe,
52             const size_t& expectedSize) override;
53 
ActorDestroy(ActorDestroyReason why)54     virtual void ActorDestroy(ActorDestroyReason why) override
55     {
56         if (NormalShutdown != why)
57             fail("unexpected destruction!");
58         QuitChild();
59     }
60 };
61 
62 
63 } // namespace _ipdltest
64 } // namespace mozilla
65 
66 #endif // ifndef mozilla__ipdltest_TestShmem_h
67