mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	This prevents copies and avoids the hack we have to avoid this, which
right now is using nsDependent{C,}String.
Non-virtual actors can still use `nsString` if they need to on the
receiving end.
Differential Revision: https://phabricator.services.mozilla.com/D152519
		
	
			
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.5 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"
 | 
						|
 | 
						|
using mozilla::ipc::PTestShellCommandChild;
 | 
						|
using mozilla::ipc::TestShellChild;
 | 
						|
using mozilla::ipc::XPCShellEnvironment;
 | 
						|
 | 
						|
TestShellChild::TestShellChild()
 | 
						|
    : mXPCShell(XPCShellEnvironment::CreateEnvironment()) {}
 | 
						|
 | 
						|
mozilla::ipc::IPCResult TestShellChild::RecvExecuteCommand(
 | 
						|
    const nsAString& aCommand) {
 | 
						|
  if (mXPCShell->IsQuitting()) {
 | 
						|
    NS_WARNING("Commands sent after quit command issued!");
 | 
						|
    return IPC_FAIL_NO_REASON(this);
 | 
						|
  }
 | 
						|
 | 
						|
  if (!mXPCShell->EvaluateString(aCommand)) {
 | 
						|
    return IPC_FAIL_NO_REASON(this);
 | 
						|
  }
 | 
						|
  return IPC_OK();
 | 
						|
}
 | 
						|
 | 
						|
PTestShellCommandChild* TestShellChild::AllocPTestShellCommandChild(
 | 
						|
    const nsAString& aCommand) {
 | 
						|
  return new PTestShellCommandChild();
 | 
						|
}
 | 
						|
 | 
						|
bool TestShellChild::DeallocPTestShellCommandChild(
 | 
						|
    PTestShellCommandChild* aCommand) {
 | 
						|
  delete aCommand;
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
mozilla::ipc::IPCResult TestShellChild::RecvPTestShellCommandConstructor(
 | 
						|
    PTestShellCommandChild* aActor, const nsAString& aCommand) {
 | 
						|
  if (mXPCShell->IsQuitting()) {
 | 
						|
    NS_WARNING("Commands sent after quit command issued!");
 | 
						|
    return IPC_FAIL_NO_REASON(this);
 | 
						|
  }
 | 
						|
 | 
						|
  nsString response;
 | 
						|
  if (!mXPCShell->EvaluateString(aCommand, &response)) {
 | 
						|
    return IPC_FAIL_NO_REASON(this);
 | 
						|
  }
 | 
						|
 | 
						|
  if (!PTestShellCommandChild::Send__delete__(aActor, response)) {
 | 
						|
    return IPC_FAIL_NO_REASON(this);
 | 
						|
  }
 | 
						|
  return IPC_OK();
 | 
						|
}
 |