1
0
Fork 0
firefox/toolkit/mozapps/extensions/test/xpcshell/test_permissions.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

199 lines
4.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Checks that permissions set in preferences are correctly imported but can
// be removed by the user.
const { PermissionTestUtils } = ChromeUtils.importESModule(
"resource://testing-common/PermissionTestUtils.sys.mjs"
);
const XPI_MIMETYPE = "application/x-xpinstall";
function newPrincipal(uri) {
return Services.scriptSecurityManager.createContentPrincipal(
NetUtil.newURI(uri),
{}
);
}
add_task(async function setup() {
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2");
Services.prefs.setCharPref(
"xpinstall.whitelist.add",
"https://test1.com,https://test2.com"
);
Services.prefs.setCharPref(
"xpinstall.whitelist.add.36",
"https://test3.com,https://www.test4.com"
);
Services.prefs.setCharPref(
"xpinstall.whitelist.add.test5",
"https://test5.com"
);
PermissionTestUtils.add(
"https://www.test9.com",
"install",
Ci.nsIPermissionManager.ALLOW_ACTION
);
await promiseStartupManager();
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("http://test1.com")
)
);
Assert.ok(
AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test1.com")
)
);
Assert.ok(
AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test2.com")
)
);
Assert.ok(
AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test3.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test4.com")
)
);
Assert.ok(
AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test4.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("http://www.test5.com")
)
);
Assert.ok(
AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test5.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("http://www.test6.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test6.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test7.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test8.com")
)
);
// This should remain unaffected
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("http://www.test9.com")
)
);
Assert.ok(
AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test9.com")
)
);
Services.perms.removeAll();
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test1.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test2.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test3.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test4.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test5.com")
)
);
// Upgrade the application and verify that the permissions are still not there
await promiseRestartManager("2");
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test1.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test2.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://test3.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test4.com")
)
);
Assert.ok(
!AddonManager.isInstallAllowed(
XPI_MIMETYPE,
newPrincipal("https://www.test5.com")
)
);
});