tenfourfox/toolkit/components/addoncompat/tests/browser/browser_addonShims.js

68 lines
2.0 KiB
JavaScript
Raw Normal View History

2017-04-19 07:56:45 +00:00
var {AddonManager} = Cu.import("resource://gre/modules/AddonManager.jsm", {});
var {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
const ADDON_URL = "http://example.com/browser/toolkit/components/addoncompat/tests/browser/addon.xpi";
const COMPAT_ADDON_URL = "http://example.com/browser/toolkit/components/addoncompat/tests/browser/compat-addon.xpi";
// Install a test add-on that will exercise e10s shims.
// url: Location of the add-on.
function addAddon(url)
{
info("Installing add-on: " + url);
return new Promise(function(resolve, reject) {
AddonManager.getInstallForURL(url, installer => {
installer.install();
let listener = {
onInstallEnded: function(addon, addonInstall) {
installer.removeListener(listener);
// Wait for add-on's startup scripts to execute. See bug 997408
executeSoon(function() {
resolve(addonInstall);
});
}
};
installer.addListener(listener);
}, "application/x-xpinstall");
});
}
// Uninstall a test add-on.
// addon: The addon reference returned from addAddon.
function removeAddon(addon)
{
info("Removing addon.");
return new Promise(function(resolve, reject) {
let listener = {
onUninstalled: function(uninstalledAddon) {
if (uninstalledAddon != addon) {
return;
}
AddonManager.removeAddonListener(listener);
resolve();
}
};
AddonManager.addAddonListener(listener);
addon.uninstall();
});
}
add_task(function* test_addon_shims() {
yield new Promise(resolve => {
SpecialPowers.pushPrefEnv({set: [["dom.ipc.shims.enabledWarnings", true]]},
resolve);
});
let addon = yield addAddon(ADDON_URL);
yield window.runAddonShimTests({ok: ok, is: is, info: info});
yield removeAddon(addon);
if (Services.appinfo.browserTabsRemoteAutostart) {
addon = yield addAddon(COMPAT_ADDON_URL);
yield window.runAddonTests({ok: ok, is: is, info: info});
yield removeAddon(addon);
}
});