Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 #include "TestRaceDeferral.h"
3 #include "IPDLUnitTests.h" // fail etc.
5 using namespace mozilla::ipc;
6 typedef mozilla::ipc::MessageChannel::Message Message;
8 namespace mozilla {
9 namespace _ipdltest {
11 static RacyInterruptPolicy
12 MediateRace(const Message& parent, const Message& child)
13 {
14 return (PTestRaceDeferral::Msg_Win__ID == parent.type()) ?
15 RIPParentWins : RIPChildWins;
16 }
18 //-----------------------------------------------------------------------------
19 // parent
21 TestRaceDeferralParent::TestRaceDeferralParent()
22 : mProcessedLose(false)
23 {
24 MOZ_COUNT_CTOR(TestRaceDeferralParent);
25 }
27 TestRaceDeferralParent::~TestRaceDeferralParent()
28 {
29 MOZ_COUNT_DTOR(TestRaceDeferralParent);
31 if (!mProcessedLose)
32 fail("never processed Lose");
33 }
35 void
36 TestRaceDeferralParent::Main()
37 {
38 Test1();
40 Close();
41 }
43 void
44 TestRaceDeferralParent::Test1()
45 {
46 if (!SendStartRace())
47 fail("sending StartRace");
49 if (!CallWin())
50 fail("calling Win");
51 if (mProcessedLose)
52 fail("Lose didn't lose");
54 if (!CallRpc())
55 fail("calling Rpc");
56 if (!mProcessedLose)
57 fail("didn't resolve Rpc vs. Lose 'race' correctly");
58 }
60 bool
61 TestRaceDeferralParent::AnswerLose()
62 {
63 if (mProcessedLose)
64 fail("processed Lose twice");
65 mProcessedLose = true;
66 return true;
67 }
69 RacyInterruptPolicy
70 TestRaceDeferralParent::MediateInterruptRace(const Message& parent,
71 const Message& child)
72 {
73 return MediateRace(parent, child);
74 }
76 //-----------------------------------------------------------------------------
77 // child
79 TestRaceDeferralChild::TestRaceDeferralChild()
80 {
81 MOZ_COUNT_CTOR(TestRaceDeferralChild);
82 }
84 TestRaceDeferralChild::~TestRaceDeferralChild()
85 {
86 MOZ_COUNT_DTOR(TestRaceDeferralChild);
87 }
89 bool
90 TestRaceDeferralChild::RecvStartRace()
91 {
92 if (!CallLose())
93 fail("calling Lose");
94 return true;
95 }
97 bool
98 TestRaceDeferralChild::AnswerWin()
99 {
100 return true;
101 }
103 bool
104 TestRaceDeferralChild::AnswerRpc()
105 {
106 return true;
107 }
109 RacyInterruptPolicy
110 TestRaceDeferralChild::MediateInterruptRace(const Message& parent,
111 const Message& child)
112 {
113 return MediateRace(parent, child);
114 }
116 } // namespace _ipdltest
117 } // namespace mozilla