gecko-dev/ipc/testshell/TestShellChild.cpp
2012-05-21 12:12:37 +01:00

76 lines
1.8 KiB
C++

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "TestShellChild.h"
#include "mozilla/jsipc/ContextWrapperChild.h"
using mozilla::ipc::TestShellChild;
using mozilla::ipc::PTestShellCommandChild;
using mozilla::ipc::XPCShellEnvironment;
using mozilla::jsipc::PContextWrapperChild;
using mozilla::jsipc::ContextWrapperChild;
TestShellChild::TestShellChild()
: mXPCShell(XPCShellEnvironment::CreateEnvironment())
{
}
bool
TestShellChild::RecvExecuteCommand(const nsString& aCommand)
{
if (mXPCShell->IsQuitting()) {
NS_WARNING("Commands sent after quit command issued!");
return false;
}
return mXPCShell->EvaluateString(aCommand);
}
PTestShellCommandChild*
TestShellChild::AllocPTestShellCommand(const nsString& aCommand)
{
return new PTestShellCommandChild();
}
bool
TestShellChild::DeallocPTestShellCommand(PTestShellCommandChild* aCommand)
{
delete aCommand;
return true;
}
bool
TestShellChild::RecvPTestShellCommandConstructor(PTestShellCommandChild* aActor,
const nsString& aCommand)
{
if (mXPCShell->IsQuitting()) {
NS_WARNING("Commands sent after quit command issued!");
return false;
}
nsString response;
if (!mXPCShell->EvaluateString(aCommand, &response)) {
return false;
}
return PTestShellCommandChild::Send__delete__(aActor, response);
}
PContextWrapperChild*
TestShellChild::AllocPContextWrapper()
{
JSContext* cx;
if (mXPCShell && (cx = mXPCShell->GetContext())) {
return new ContextWrapperChild(cx);
}
return NULL;
}
bool
TestShellChild::DeallocPContextWrapper(PContextWrapperChild* actor)
{
delete actor;
return true;
}