ipc/ipdl/test/cxx/TestRaceDeferral.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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

mercurial