async function tearDownAddon(addon) {
await addon.uninstall();
await promiseShutdownManager();
}
add_task(async function test_reloading_a_temp_addon() {
await promiseRestartManager();
let xpi = AddonTestUtils.createTempXPIFile(ADDONS.webextension_1); const addon = await AddonManager.installTemporaryAddon(xpi);
var receivedOnUninstalled = false; var receivedOnUninstalling = false; var receivedOnInstalled = false; var receivedOnInstalling = false;
const onReload = new Promise(resolve => { const listener = {
onUninstalling: addonObj => { if (addonObj.id === ID) {
receivedOnUninstalling = true;
}
},
onUninstalled: addonObj => { if (addonObj.id === ID) {
receivedOnUninstalled = true;
}
},
onInstalling: addonObj => {
receivedOnInstalling = true;
equal(addonObj.id, ID);
},
onInstalled: addonObj => {
receivedOnInstalled = true;
equal(addonObj.id, ID); // This should be the last event called.
AddonManager.removeAddonListener(listener);
resolve();
},
};
AddonManager.addAddonListener(listener);
});
await addon.reload();
await onReload;
// Make sure reload() doesn't trigger uninstall events.
equal(
receivedOnUninstalled, false, "reload should not trigger onUninstalled"
);
equal(
receivedOnUninstalling, false, "reload should not trigger onUninstalling"
);
// Make sure reload() triggers install events, like an upgrade.
equal(receivedOnInstalling, true, "reload should trigger onInstalling");
equal(receivedOnInstalled, true, "reload should trigger onInstalled");
add_task(async function test_reload_to_invalid_version_fails() {
await promiseRestartManager();
let tempdir = gTmpD.clone();
// The initial version of the add-on will be compatible, and will therefore load const addonId = "invalid_version_cannot_be_reloaded@tests.mozilla.org";
let manifest = {
name: "invalid_version_cannot_be_reloaded",
description: "test invalid_version_cannot_be_reloaded",
manifest_version: 2,
version: "1.0",
browser_specific_settings: {
gecko: {
id: addonId,
},
},
};
// update the manifest to make the add-on version incompatible, so the reload will reject
manifest.browser_specific_settings.gecko.strict_min_version = "1";
manifest.browser_specific_settings.gecko.strict_max_version = "1";
manifest.version = "2.0";
addonDir = await promiseWriteWebManifestForExtension(
manifest,
tempdir, "invalid_version", false
);
let expectedMsg = new RegExp( "Add-on invalid_version_cannot_be_reloaded@tests.mozilla.org is not compatible with application version. " + "add-on minVersion: 1. add-on maxVersion: 1."
);
await Assert.rejects(
addon.reload(),
expectedMsg, "Reload rejects when application version does not fall between minVersion and maxVersion"
);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.