Files
Alexandre Poirot 7610af1774 Bug 2064424 - [devtools] Always use CommandsFactory helpers to instantiate local DevToolsClient's. r=devtools-reviewers,nchevobbe
This helps share the logic to create the DevToolsServer
and better highlights tab-debugger client (createLocalClientForTests)
versus browser-toolbox-debugger client (spawnClientToDebugSystemPrincipal).

Differential Revision: https://phabricator.services.mozilla.com/D319532
2026-08-24 18:50:34 +00:00

57 lines
2.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const { AddonManager } = ChromeUtils.importESModule(
"resource://gre/modules/AddonManager.sys.mjs"
);
add_task(async function testReloadExitedAddon() {
await startupAddonsManager();
const client = await CommandsFactory.spawnClientToDebugSystemPrincipal();
// Retrieve the current list of addons to be notified of the next list update.
// We will also call listAddons every time we receive the event "addonListChanged" for
// the same reason.
await client.mainRoot.listAddons();
info("Install the addon");
const addonFile = do_get_file("addons/web-extension", false);
let installedAddon;
await expectAddonListChanged(client, async () => {
installedAddon = await AddonManager.installTemporaryAddon(addonFile);
});
ok(true, "Received onAddonListChanged when installing addon");
info("Disable the addon");
await expectAddonListChanged(client, () => installedAddon.disable());
ok(true, "Received onAddonListChanged when disabling addon");
info("Enable the addon");
await expectAddonListChanged(client, () => installedAddon.enable());
ok(true, "Received onAddonListChanged when enabling addon");
info("Put the addon in pending uninstall mode");
await expectAddonListChanged(client, () => installedAddon.uninstall(true));
ok(true, "Received onAddonListChanged when addon moves to pending uninstall");
info("Cancel uninstall for addon");
await expectAddonListChanged(client, () => installedAddon.cancelUninstall());
ok(true, "Received onAddonListChanged when addon uninstall is canceled");
info("Completely uninstall the addon");
await expectAddonListChanged(client, () => installedAddon.uninstall());
ok(true, "Received onAddonListChanged when addon is uninstalled");
await close(client);
});
async function expectAddonListChanged(client, predicate) {
const onAddonListChanged = client.mainRoot.once("addonListChanged");
await predicate();
await onAddonListChanged;
await client.mainRoot.listAddons();
}