forked from mirrors/gecko-dev
		
	 66734a7b4f
			
		
	
	
		66734a7b4f
		
	
	
	
	
		
			
			MozReview-Commit-ID: 1ogotK4j3cy --HG-- rename : toolkit/components/extensions/test/xpcshell/head_remote.js => browser/components/extensions/test/xpcshell/head_remote.js rename : browser/components/extensions/test/xpcshell/xpcshell.ini => browser/components/extensions/test/xpcshell/xpcshell-common.ini rename : browser/components/extensions/test/xpcshell/xpcshell.ini => browser/components/extensions/test/xpcshell/xpcshell-remote.ini extra : source : 3737f31a7ec3dcc68068e817b4b016b76c857d9e extra : intermediate-source : e017440a55a8be15f67be5e538416d7b240b4f65
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
 | |
| 
 | |
| /* exported createHttpServer, promiseConsoleOutput  */
 | |
| 
 | |
| Components.utils.import("resource://gre/modules/Services.jsm");
 | |
| Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 | |
| 
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "AppConstants",
 | |
|                                   "resource://gre/modules/AppConstants.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "Extension",
 | |
|                                   "resource://gre/modules/Extension.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "ExtensionData",
 | |
|                                   "resource://gre/modules/Extension.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "ExtensionTestUtils",
 | |
|                                   "resource://testing-common/ExtensionXPCShellUtils.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
 | |
|                                   "resource://gre/modules/FileUtils.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "HttpServer",
 | |
|                                   "resource://testing-common/httpd.js");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
 | |
|                                   "resource://gre/modules/NetUtil.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "Schemas",
 | |
|                                   "resource://gre/modules/Schemas.jsm");
 | |
| XPCOMUtils.defineLazyModuleGetter(this, "TestUtils",
 | |
|                                   "resource://testing-common/TestUtils.jsm");
 | |
| 
 | |
| Services.prefs.setBoolPref("extensions.webextensions.remote", false);
 | |
| 
 | |
| ExtensionTestUtils.init(this);
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Creates a new HttpServer for testing, and begins listening on the
 | |
|  * specified port. Automatically shuts down the server when the test
 | |
|  * unit ends.
 | |
|  *
 | |
|  * @param {integer} [port]
 | |
|  *        The port to listen on. If omitted, listen on a random
 | |
|  *        port. The latter is the preferred behavior.
 | |
|  *
 | |
|  * @returns {HttpServer}
 | |
|  */
 | |
| function createHttpServer(port = -1) {
 | |
|   let server = new HttpServer();
 | |
|   server.start(port);
 | |
| 
 | |
|   do_register_cleanup(() => {
 | |
|     return new Promise(resolve => {
 | |
|       server.stop(resolve);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   return server;
 | |
| }
 | |
| 
 | |
| var promiseConsoleOutput = async function(task) {
 | |
|   const DONE = `=== console listener ${Math.random()} done ===`;
 | |
| 
 | |
|   let listener;
 | |
|   let messages = [];
 | |
|   let awaitListener = new Promise(resolve => {
 | |
|     listener = msg => {
 | |
|       if (msg == DONE) {
 | |
|         resolve();
 | |
|       } else {
 | |
|         void (msg instanceof Ci.nsIConsoleMessage);
 | |
|         messages.push(msg);
 | |
|       }
 | |
|     };
 | |
|   });
 | |
| 
 | |
|   Services.console.registerListener(listener);
 | |
|   try {
 | |
|     let result = await task();
 | |
| 
 | |
|     Services.console.logStringMessage(DONE);
 | |
|     await awaitListener;
 | |
| 
 | |
|     return {messages, result};
 | |
|   } finally {
 | |
|     Services.console.unregisterListener(listener);
 | |
|   }
 | |
| };
 |