mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-05 14:57:30 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
131
ipc/ipdl/test/cxx/TestInterruptRaces.h
Normal file
131
ipc/ipdl/test/cxx/TestInterruptRaces.h
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
#ifndef mozilla__ipdltest_TestInterruptRaces_h
|
||||
#define mozilla__ipdltest_TestInterruptRaces_h
|
||||
|
||||
#include "mozilla/_ipdltest/IPDLUnitTests.h"
|
||||
|
||||
#include "mozilla/_ipdltest/PTestInterruptRacesParent.h"
|
||||
#include "mozilla/_ipdltest/PTestInterruptRacesChild.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
mozilla::ipc::RacyInterruptPolicy
|
||||
MediateRace(const mozilla::ipc::MessageChannel::MessageInfo& parent,
|
||||
const mozilla::ipc::MessageChannel::MessageInfo& child);
|
||||
|
||||
class TestInterruptRacesParent :
|
||||
public PTestInterruptRacesParent
|
||||
{
|
||||
public:
|
||||
TestInterruptRacesParent() : mHasReply(false),
|
||||
mChildHasReply(false),
|
||||
mAnsweredParent(false)
|
||||
{ }
|
||||
virtual ~TestInterruptRacesParent() { }
|
||||
|
||||
static bool RunTestInProcesses() { return true; }
|
||||
static bool RunTestInThreads() { return true; }
|
||||
|
||||
void Main();
|
||||
|
||||
protected:
|
||||
virtual bool
|
||||
RecvStartRace() override;
|
||||
|
||||
virtual bool
|
||||
AnswerRace(bool* hasRace) override;
|
||||
|
||||
virtual bool
|
||||
AnswerStackFrame() override;
|
||||
|
||||
virtual bool
|
||||
AnswerStackFrame3() override;
|
||||
|
||||
virtual bool
|
||||
AnswerParent() override;
|
||||
|
||||
virtual bool
|
||||
RecvGetAnsweredParent(bool* answeredParent) override;
|
||||
|
||||
virtual mozilla::ipc::RacyInterruptPolicy
|
||||
MediateInterruptRace(const MessageInfo& parent,
|
||||
const MessageInfo& child) override
|
||||
{
|
||||
return MediateRace(parent, child);
|
||||
}
|
||||
|
||||
virtual void ActorDestroy(ActorDestroyReason why) override
|
||||
{
|
||||
if (NormalShutdown != why)
|
||||
fail("unexpected destruction!");
|
||||
if (!(mHasReply && mChildHasReply))
|
||||
fail("both sides should have replies!");
|
||||
passed("ok");
|
||||
QuitParent();
|
||||
}
|
||||
|
||||
private:
|
||||
void OnRaceTime();
|
||||
|
||||
void Test2();
|
||||
void Test3();
|
||||
|
||||
bool mHasReply;
|
||||
bool mChildHasReply;
|
||||
bool mAnsweredParent;
|
||||
};
|
||||
|
||||
|
||||
class TestInterruptRacesChild :
|
||||
public PTestInterruptRacesChild
|
||||
{
|
||||
public:
|
||||
TestInterruptRacesChild() : mHasReply(false) { }
|
||||
virtual ~TestInterruptRacesChild() { }
|
||||
|
||||
protected:
|
||||
virtual bool
|
||||
RecvStart() override;
|
||||
|
||||
virtual bool
|
||||
AnswerRace(bool* hasRace) override;
|
||||
|
||||
virtual bool
|
||||
AnswerStackFrame() override;
|
||||
|
||||
virtual bool
|
||||
AnswerStackFrame3() override;
|
||||
|
||||
virtual bool
|
||||
RecvWakeup() override;
|
||||
|
||||
virtual bool
|
||||
RecvWakeup3() override;
|
||||
|
||||
virtual bool
|
||||
AnswerChild() override;
|
||||
|
||||
virtual mozilla::ipc::RacyInterruptPolicy
|
||||
MediateInterruptRace(const MessageInfo& parent,
|
||||
const MessageInfo& child) override
|
||||
{
|
||||
return MediateRace(parent, child);
|
||||
}
|
||||
|
||||
virtual void ActorDestroy(ActorDestroyReason why) override
|
||||
{
|
||||
if (NormalShutdown != why)
|
||||
fail("unexpected destruction!");
|
||||
QuitChild();
|
||||
}
|
||||
|
||||
private:
|
||||
bool mHasReply;
|
||||
};
|
||||
|
||||
|
||||
} // namespace _ipdltest
|
||||
} // namespace mozilla
|
||||
|
||||
|
||||
#endif // ifndef mozilla__ipdltest_TestInterruptRaces_h
|
||||
Loading…
Add table
Add a link
Reference in a new issue