forked from mirrors/gecko-dev
		
	 d621561a4a
			
		
	
	
		d621561a4a
		
	
	
	
	
		
			
			A small xpcom module implemented in Rust, designed to provide low-level tools to deal with processes from JS. For the moment, the only notable feature is `kill()`, designed to be used from about:processes Differential Revision: https://phabricator.services.mozilla.com/D82552
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1.1 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 "mozilla/ClearOnShutdown.h"
 | |
| #include "mozilla/StaticPtr.h"
 | |
| #include "nsCOMPtr.h"
 | |
| #include "ProcessToolsService.h"
 | |
| 
 | |
| // This anonymous namespace prevents outside C++ code from improperly accessing
 | |
| // these implementation details.
 | |
| namespace {
 | |
| extern "C" {
 | |
| // Implemented in Rust.
 | |
| void new_process_tools_service(nsIProcessToolsService** result);
 | |
| }
 | |
| 
 | |
| static mozilla::StaticRefPtr<nsIProcessToolsService> sProcessToolsService;
 | |
| }  // namespace
 | |
| 
 | |
| already_AddRefed<nsIProcessToolsService> GetProcessToolsService() {
 | |
|   nsCOMPtr<nsIProcessToolsService> processToolsService;
 | |
| 
 | |
|   if (sProcessToolsService) {
 | |
|     processToolsService = sProcessToolsService;
 | |
|   } else {
 | |
|     new_process_tools_service(getter_AddRefs(processToolsService));
 | |
|     sProcessToolsService = processToolsService;
 | |
|     mozilla::ClearOnShutdown(&sProcessToolsService);
 | |
|   }
 | |
| 
 | |
|   return processToolsService.forget();
 | |
| }
 |