Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
*/
// Tests blocking of extensions by ID, name, creator, homepageURL, updateURL
// and RegExps for each. See bug 897735.
// useMLBF=true only supports blocking by version+ID, not by other fields.
enable_blocklist_v2_instead_of_useMLBF();
const BLOCKLIST_DATA = {
extensions: [
{
guid: null,
name: "/^Mozilla Corp\\.$/",
versionRange: [
{
severity: "1",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "2.*",
minVersion: "1",
},
],
},
],
},
{
guid: "/block2/",
name: "/^Moz/",
homepageURL: "/\\.dangerous\\.com/",
updateURL: "/\\.dangerous\\.com/",
versionRange: [
{
severity: "3",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "2.*",
minVersion: "1",
},
],
},
],
},
],
};
add_task(async function setup() {
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
await promiseStartupManager();
// Should get blocked by name
await promiseInstallWebExtension({
manifest: {
name: "Mozilla Corp.",
version: "1.0",
browser_specific_settings: { gecko: { id: "block1@tests.mozilla.org" } },
},
});
// Should get blocked by all the attributes.
await promiseInstallWebExtension({
manifest: {
name: "Moz-addon",
version: "1.0",
browser_specific_settings: {
gecko: {
id: "block2@tests.mozilla.org",
},
},
},
});
// Fails to get blocked because of a different ID even though other
// attributes match against a blocklist entry.
await promiseInstallWebExtension({
manifest: {
name: "Moz-addon",
version: "1.0",
browser_specific_settings: {
gecko: {
id: "block3@tests.mozilla.org",
},
},
},
});
let [a1, a2, a3] = await AddonManager.getAddonsByIDs([
"block1@tests.mozilla.org",
"block2@tests.mozilla.org",
"block3@tests.mozilla.org",
]);
Assert.equal(a1.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
Assert.equal(a2.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
Assert.equal(a3.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
});
add_task(async function test_blocks() {
await AddonTestUtils.loadBlocklistRawData(BLOCKLIST_DATA);
let [a1, a2, a3] = await AddonManager.getAddonsByIDs([
"block1@tests.mozilla.org",
"block2@tests.mozilla.org",
"block3@tests.mozilla.org",
]);
Assert.equal(a1.blocklistState, Ci.nsIBlocklistService.STATE_SOFTBLOCKED);
Assert.equal(a2.blocklistState, Ci.nsIBlocklistService.STATE_BLOCKED);
Assert.equal(a3.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
});