Files
tubestation/toolkit/components/extensions/test/mochitest/head.js
Shane Caraveo 3f052b895e Bug 1310427 support protocol handlers, r=kmag
MozReview-Commit-ID: 7sHh8YZWe3f
2017-02-24 11:20:20 -08:00

58 lines
1.6 KiB
JavaScript

"use strict";
/* exported AppConstants, Assert */
var {AppConstants} = SpecialPowers.Cu.import("resource://gre/modules/AppConstants.jsm", {});
// We run tests under two different configurations, from mochitest.ini and
// mochitest-remote.ini. When running from mochitest-remote.ini, the tests are
// copied to the sub-directory "test-oop-extensions", which we detect here, and
// use to select our configuration.
if (location.pathname.includes("test-oop-extensions")) {
SpecialPowers.pushPrefEnv({set: [
["extensions.webextensions.remote", true],
]});
// We don't want to reset this at the end of the test, so that we don't have
// to spawn a new extension child process for each test unit.
SpecialPowers.setIntPref("dom.ipc.keepProcessesAlive.extension", 1);
}
{
let chromeScript = SpecialPowers.loadChromeScript(
SimpleTest.getTestFileURL("chrome_cleanup_script.js"));
SimpleTest.registerCleanupFunction(async () => {
await new Promise(resolve => setTimeout(resolve, 0));
chromeScript.sendAsyncMessage("check-cleanup");
let results = await chromeScript.promiseOneMessage("cleanup-results");
chromeScript.destroy();
if (results.extraWindows.length || results.extraTabs.length) {
ok(false, `Test left extra windows or tabs: ${JSON.stringify(results)}\n`);
}
});
}
let Assert = {
rejects(promise, msg) {
return promise.then(() => {
ok(false, msg);
}, () => {
ok(true, msg);
});
},
};
/* exported waitForLoad */
function waitForLoad(win) {
return new Promise(resolve => {
win.addEventListener("load", function() {
resolve();
}, {capture: true, once: true});
});
}