Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const BASE_URL =
/**
* Wait for the given PopupNotification to display
*
* @param {string} name
* The name of the notification to wait for.
*
* @returns {Promise}
* Resolves with the notification window.
*/
function promisePopupNotificationShown(name) {
return new Promise(resolve => {
function popupshown() {
let notification = PopupNotifications.getNotification(name);
if (!notification) {
return;
}
ok(notification, `${name} notification shown`);
ok(PopupNotifications.isPanelOpen, "notification panel open");
PopupNotifications.panel.removeEventListener("popupshown", popupshown);
resolve(PopupNotifications.panel.firstElementChild);
}
PopupNotifications.panel.addEventListener("popupshown", popupshown);
});
}
add_setup(async function setupTestEnvironment() {
// Once InstallTrigger is removed, the tests targeting InstallTrigger should
// be removed or adapted to don't use InstallTrigger.
await SpecialPowers.pushPrefEnv({
set: [
["extensions.InstallTrigger.enabled", true],
["extensions.InstallTriggerImpl.enabled", true],
// Relax the user input requirements while running this test.
["xpinstall.userActivation.required", false],
],
});
});
add_task(async function test_install_source_blocked_link() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
},
},
},
});
let popupPromise = promisePopupNotificationShown(
"addon-install-policy-blocked"
);
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
content.document.getElementById("policytest").click();
});
await popupPromise;
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_blocked_installtrigger() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
blocked_install_message: "blocked_install_message",
},
},
},
});
let popupPromise = promisePopupNotificationShown(
"addon-install-policy-blocked"
);
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
content.document.getElementById("policytest_installtrigger").click();
});
let popup = await popupPromise;
let description = popup.querySelector(".popup-notification-description");
ok(
description.textContent.endsWith("blocked_install_message"),
"Custom install message present"
);
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_blocked_otherdomain() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
install_sources: ["http://mochi.test/*"],
},
},
},
});
let popupPromise = promisePopupNotificationShown(
"addon-install-policy-blocked"
);
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
content.document.getElementById("policytest_otherdomain").click();
});
await popupPromise;
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_blocked_direct() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
},
},
},
});
let popupPromise = promisePopupNotificationShown(
"addon-install-policy-blocked"
);
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(
tab.linkedBrowser,
[{ baseUrl: BASE_URL }],
async function ({ baseUrl }) {
content.document.location.href = baseUrl + "policytest_v0.1.xpi";
}
);
await popupPromise;
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_allowed_link() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
install_sources: ["http://mochi.test/*"],
},
},
},
});
let popupPromise = promisePopupNotificationShown("addon-webext-permissions");
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
content.document.getElementById("policytest").click();
});
await popupPromise;
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_allowed_installtrigger() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
install_sources: ["http://mochi.test/*"],
},
},
},
});
let popupPromise = promisePopupNotificationShown("addon-webext-permissions");
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
content.document.getElementById("policytest_installtrigger").click();
});
await popupPromise;
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_allowed_otherdomain() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
install_sources: ["http://mochi.test/*", "http://example.org/*"],
},
},
},
});
let popupPromise = promisePopupNotificationShown("addon-webext-permissions");
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
content.document.getElementById("policytest_otherdomain").click();
});
await popupPromise;
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_install_source_allowed_direct() {
await setupPolicyEngineWithJson({
policies: {
ExtensionSettings: {
"*": {
install_sources: ["http://mochi.test/*"],
},
},
},
});
let popupPromise = promisePopupNotificationShown("addon-webext-permissions");
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: BASE_URL + "extensionsettings.html",
waitForStateStop: true,
});
await SpecialPowers.spawn(
tab.linkedBrowser,
[{ baseUrl: BASE_URL }],
async function ({ baseUrl }) {
content.document.location.href = baseUrl + "policytest_v0.1.xpi";
}
);
await popupPromise;
BrowserTestUtils.removeTab(tab);
});