forked from mirrors/gecko-dev
		
	 42b7f1a58c
			
		
	
	
		42b7f1a58c
		
	
	
	
	
		
			
			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();
 | |
| }
 |