199 lines
4.1 KiB
JavaScript
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")
|
|
)
|
|
);
|
|
});
|