mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-06-27 09:58:40 +00:00
145 lines
3.4 KiB
JavaScript
145 lines
3.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
const profileDir = gProfD.clone();
|
|
profileDir.append("extensions");
|
|
|
|
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
|
|
startupManager();
|
|
|
|
const BOOTSTRAP = String.raw`
|
|
Components.utils.import("resource://gre/modules/Services.jsm");
|
|
|
|
function startup(data) {
|
|
Services.obs.notifyObservers(null, "test-addon-bootstrap-startup", data.id);
|
|
}
|
|
function shutdown(data) {
|
|
Services.obs.notifyObservers(null, "test-addon-bootstrap-shutdown", data.id);
|
|
}
|
|
function install() {}
|
|
function uninstall() {}
|
|
`;
|
|
|
|
const ADDONS = [
|
|
{
|
|
id: "addon1@dependency-test.mozilla.org",
|
|
dependencies: ["addon2@dependency-test.mozilla.org"],
|
|
},
|
|
{
|
|
id: "addon2@dependency-test.mozilla.org",
|
|
dependencies: ["addon3@dependency-test.mozilla.org"],
|
|
},
|
|
{
|
|
id: "addon3@dependency-test.mozilla.org",
|
|
},
|
|
{
|
|
id: "addon4@dependency-test.mozilla.org",
|
|
},
|
|
{
|
|
id: "addon5@dependency-test.mozilla.org",
|
|
dependencies: ["addon2@dependency-test.mozilla.org"],
|
|
},
|
|
];
|
|
|
|
let addonFiles = [];
|
|
|
|
let events = [];
|
|
add_task(function* setup() {
|
|
let startupObserver = (subject, topic, data) => {
|
|
events.push(["startup", data]);
|
|
};
|
|
let shutdownObserver = (subject, topic, data) => {
|
|
events.push(["shutdown", data]);
|
|
};
|
|
|
|
Services.obs.addObserver(startupObserver, "test-addon-bootstrap-startup", false);
|
|
Services.obs.addObserver(shutdownObserver, "test-addon-bootstrap-shutdown", false);
|
|
do_register_cleanup(() => {
|
|
Services.obs.removeObserver(startupObserver, "test-addon-bootstrap-startup");
|
|
Services.obs.removeObserver(shutdownObserver, "test-addon-bootstrap-shutdown");
|
|
});
|
|
|
|
for (let addon of ADDONS) {
|
|
Object.assign(addon, {
|
|
targetApplications: [{
|
|
id: "xpcshell@tests.mozilla.org",
|
|
minVersion: "1",
|
|
maxVersion: "1",
|
|
}],
|
|
version: "1.0",
|
|
name: addon.id,
|
|
bootstrap: true,
|
|
});
|
|
|
|
addonFiles.push(createTempXPIFile(addon, {"bootstrap.js": BOOTSTRAP}));
|
|
}
|
|
});
|
|
|
|
add_task(function*() {
|
|
deepEqual(events, [], "Should have no events");
|
|
|
|
yield promiseInstallAllFiles([addonFiles[3]]);
|
|
|
|
deepEqual(events, [
|
|
["startup", ADDONS[3].id],
|
|
]);
|
|
|
|
events.length = 0;
|
|
|
|
yield promiseInstallAllFiles([addonFiles[0]]);
|
|
deepEqual(events, [], "Should have no events");
|
|
|
|
yield promiseInstallAllFiles([addonFiles[1]]);
|
|
deepEqual(events, [], "Should have no events");
|
|
|
|
yield promiseInstallAllFiles([addonFiles[2]]);
|
|
|
|
deepEqual(events, [
|
|
["startup", ADDONS[2].id],
|
|
["startup", ADDONS[1].id],
|
|
["startup", ADDONS[0].id],
|
|
]);
|
|
|
|
events.length = 0;
|
|
|
|
yield promiseInstallAllFiles([addonFiles[2]]);
|
|
|
|
deepEqual(events, [
|
|
["shutdown", ADDONS[0].id],
|
|
["shutdown", ADDONS[1].id],
|
|
["shutdown", ADDONS[2].id],
|
|
|
|
["startup", ADDONS[2].id],
|
|
["startup", ADDONS[1].id],
|
|
["startup", ADDONS[0].id],
|
|
]);
|
|
|
|
events.length = 0;
|
|
|
|
yield promiseInstallAllFiles([addonFiles[4]]);
|
|
|
|
deepEqual(events, [
|
|
["startup", ADDONS[4].id],
|
|
]);
|
|
|
|
events.length = 0;
|
|
|
|
yield promiseRestartManager();
|
|
|
|
deepEqual(events, [
|
|
["shutdown", ADDONS[4].id],
|
|
["shutdown", ADDONS[3].id],
|
|
["shutdown", ADDONS[0].id],
|
|
["shutdown", ADDONS[1].id],
|
|
["shutdown", ADDONS[2].id],
|
|
|
|
["startup", ADDONS[2].id],
|
|
["startup", ADDONS[1].id],
|
|
["startup", ADDONS[0].id],
|
|
["startup", ADDONS[3].id],
|
|
["startup", ADDONS[4].id],
|
|
]);
|
|
});
|
|
|