Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'win' && socketprocess_networking && fission
- Manifest: toolkit/components/extensions/test/xpcshell/xpcshell-remote.toml includes toolkit/components/extensions/test/xpcshell/xpcshell-common.toml
- Manifest: toolkit/components/extensions/test/xpcshell/xpcshell.toml includes toolkit/components/extensions/test/xpcshell/xpcshell-common.toml
"use strict";
// Verifies that management.setEnabled cannot be used by an extension to toggle
// itself (or any non-theme extension) unless the extension is required by an
// enterprise policy. This test runs on Android as well, to confirm that the
// absence of Services.policies does not accidentally allow setEnabled.
//
// bug on changing this behavior.
AddonTestUtils.init(this);
AddonTestUtils.overrideCertDB();
AddonTestUtils.createAppInfo(
"xpcshell@tests.mozilla.org",
"XPCShell",
"42",
"42"
);
add_setup(async () => {
await ExtensionTestUtils.startAddonManager();
});
add_task(async function test_setEnabled_on_self_rejects() {
const TEST_ID = "test_management_setenabled_self@tests.mozilla.com";
async function background(TEST_ID) {
let self = await browser.management.get(TEST_ID);
browser.test.assertTrue(self.enabled, "addon is enabled");
await browser.test.assertRejects(
browser.management.setEnabled(TEST_ID, false),
"setEnabled can only be used for themes or by addons installed by enterprise policy",
"setEnabled should fail on self when not required by policy"
);
self = await browser.management.get(TEST_ID);
browser.test.assertTrue(self.enabled, "addon is still enabled");
browser.test.sendMessage("done");
}
let extension = ExtensionTestUtils.loadExtension({
manifest: {
browser_specific_settings: { gecko: { id: TEST_ID } },
permissions: ["management"],
},
background: `(${background})("${TEST_ID}")`,
useAddonManager: "temporary",
});
await extension.startup();
await extension.awaitMessage("done");
await extension.unload();
});