forked from mirrors/gecko-dev
Backed out changeset 346d3a1568dd (bug 1834222) Backed out changeset ea1d8b634bfc (bug 1834176) Backed out changeset 74d1880272d3 (bug 1834176)
83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
/* exported createHttpServer, promiseConsoleOutput, assertPersistentListeners */
|
|
|
|
var { XPCOMUtils } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/XPCOMUtils.sys.mjs"
|
|
);
|
|
const { AppConstants } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/AppConstants.sys.mjs"
|
|
);
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
ChromeUtils.defineESModuleGetters(this, {
|
|
FileUtils: "resource://gre/modules/FileUtils.sys.mjs",
|
|
TestUtils: "resource://testing-common/TestUtils.sys.mjs",
|
|
});
|
|
|
|
XPCOMUtils.defineLazyModuleGetters(this, {
|
|
Extension: "resource://gre/modules/Extension.jsm",
|
|
ExtensionData: "resource://gre/modules/Extension.jsm",
|
|
ExtensionTestUtils: "resource://testing-common/ExtensionXPCShellUtils.jsm",
|
|
HttpServer: "resource://testing-common/httpd.js",
|
|
NetUtil: "resource://gre/modules/NetUtil.jsm",
|
|
Schemas: "resource://gre/modules/Schemas.jsm",
|
|
});
|
|
|
|
ExtensionTestUtils.init(this);
|
|
|
|
// Persistent Listener test functionality
|
|
const { assertPersistentListeners } = ExtensionTestUtils.testAssertions;
|
|
|
|
/**
|
|
* 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);
|
|
|
|
registerCleanupFunction(() => {
|
|
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);
|
|
}
|
|
};
|