Mypal68/devtools/client/aboutdebugging/test/browser_addons_remove.js
2022-04-16 07:41:55 +03:00

74 lines
2.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const PACKAGED_ADDON_NAME = "bug 1273184";
function getTargetEl(document, id) {
return document.querySelector(`[data-addon-id="${id}"]`);
}
function getRemoveButton(document, id) {
return document.querySelector(`[data-addon-id="${id}"] .uninstall-button`);
}
add_task(async function removeWebextension() {
const addonID = "test-devtools-webextension@mozilla.org";
const addonName = "test-devtools-webextension";
const { tab, document } = await openAboutDebugging("addons");
await waitForInitialAddonList(document);
const addonFile = ExtensionTestCommon.generateXPI({
manifest: {
name: addonName,
applications: {
gecko: { id: addonID },
},
},
});
registerCleanupFunction(() => addonFile.remove(false));
// Install this add-on, and verify that it appears in the about:debugging UI
await installAddon({
document,
file: addonFile,
name: addonName,
});
ok(getTargetEl(document, addonID), "add-on is shown");
info(
"Click on the remove button and wait until the addon container is removed"
);
getRemoveButton(document, addonID).click();
await waitUntil(() => !getTargetEl(document, addonID), 100);
info("add-on is not shown");
await closeAboutDebugging(tab);
});
add_task(async function onlyTempInstalledAddonsCanBeRemoved() {
const { tab, document, window } = await openAboutDebugging("addons");
const { AboutDebugging } = window;
await waitForInitialAddonList(document);
// List updated twice:
// - AddonManager's onInstalled event
// - WebExtension's Management's startup event.
const onListUpdated = waitForNEvents(AboutDebugging, "addons-updated", 2);
await installAddonWithManager(getSupportsFile("addons/bug1273184.xpi").file);
await onListUpdated;
const addon = await getAddonByID("bug1273184@tests");
info("Wait until addon appears in about:debugging#addons");
await waitUntilAddonContainer(PACKAGED_ADDON_NAME, document);
const removeButton = getRemoveButton(document, addon.id);
ok(!removeButton, "remove button is not shown");
await tearDownAddon(AboutDebugging, addon);
await closeAboutDebugging(tab);
});