Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// useMLBF=true only supports blocking by version+ID, not by OS/ABI.
enable_blocklist_v2_instead_of_useMLBF();
const profileDir = gProfD.clone();
profileDir.append("extensions");
const ADDONS = [
{
id: "test_bug393285_1@tests.mozilla.org",
name: "extension 1",
version: "1.0",
// No info in blocklist, shouldn't be blocked
notBlocklisted: [
["1", "1.9"],
[null, null],
],
},
{
id: "test_bug393285_2@tests.mozilla.org",
name: "extension 2",
version: "1.0",
// Should always be blocked
blocklisted: [
["1", "1.9"],
[null, null],
],
},
{
id: "test_bug393285_3a@tests.mozilla.org",
name: "extension 3a",
version: "1.0",
// Only version 1 should be blocked
blocklisted: [
["1", "1.9"],
[null, null],
],
},
{
id: "test_bug393285_3b@tests.mozilla.org",
name: "extension 3b",
version: "2.0",
// Only version 1 should be blocked
notBlocklisted: [["1", "1.9"]],
},
{
id: "test_bug393285_4@tests.mozilla.org",
name: "extension 4",
version: "1.0",
// Should be blocked for app version 1
blocklisted: [
["1", "1.9"],
[null, null],
],
notBlocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_5@tests.mozilla.org",
name: "extension 5",
version: "1.0",
// Not blocklisted because we are a different OS
notBlocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_6@tests.mozilla.org",
name: "extension 6",
version: "1.0",
// Blocklisted based on OS
blocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_7@tests.mozilla.org",
name: "extension 7",
version: "1.0",
// Blocklisted based on OS
blocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_8@tests.mozilla.org",
name: "extension 8",
version: "1.0",
// Not blocklisted because we are a different ABI
notBlocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_9@tests.mozilla.org",
name: "extension 9",
version: "1.0",
// Blocklisted based on ABI
blocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_10@tests.mozilla.org",
name: "extension 10",
version: "1.0",
// Blocklisted based on ABI
blocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_11@tests.mozilla.org",
name: "extension 11",
version: "1.0",
// Doesn't match both os and abi so not blocked
notBlocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_12@tests.mozilla.org",
name: "extension 12",
version: "1.0",
// Doesn't match both os and abi so not blocked
notBlocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_13@tests.mozilla.org",
name: "extension 13",
version: "1.0",
// Doesn't match both os and abi so not blocked
notBlocklisted: [["2", "1.9"]],
},
{
id: "test_bug393285_14@tests.mozilla.org",
name: "extension 14",
version: "1.0",
// Matches both os and abi so blocked
blocklisted: [["2", "1.9"]],
},
];
const ADDON_IDS = ADDONS.map(a => a.id);
const BLOCKLIST_DATA = [
{
guid: "test_bug393285_2@tests.mozilla.org",
versionRange: [],
},
{
guid: "test_bug393285_3a@tests.mozilla.org",
versionRange: [{ maxVersion: "1.0", minVersion: "1.0" }],
},
{
guid: "test_bug393285_3b@tests.mozilla.org",
versionRange: [{ maxVersion: "1.0", minVersion: "1.0" }],
},
{
guid: "test_bug393285_4@tests.mozilla.org",
versionRange: [
{
maxVersion: "1.0",
minVersion: "1.0",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "1.0",
minVersion: "1.0",
},
],
},
],
},
{
guid: "test_bug393285_5@tests.mozilla.org",
os: "Darwin",
versionRange: [],
},
{
guid: "test_bug393285_6@tests.mozilla.org",
os: "XPCShell",
versionRange: [],
},
{
guid: "test_bug393285_7@tests.mozilla.org",
os: "Darwin,XPCShell,WINNT",
versionRange: [],
},
{
guid: "test_bug393285_8@tests.mozilla.org",
xpcomabi: "x86-msvc",
versionRange: [],
},
{
guid: "test_bug393285_9@tests.mozilla.org",
xpcomabi: "noarch-spidermonkey",
versionRange: [],
},
{
guid: "test_bug393285_10@tests.mozilla.org",
xpcomabi: "ppc-gcc3,noarch-spidermonkey,x86-msvc",
versionRange: [],
},
{
guid: "test_bug393285_11@tests.mozilla.org",
os: "Darwin",
xpcomabi: "ppc-gcc3,x86-msvc",
versionRange: [],
},
{
guid: "test_bug393285_12@tests.mozilla.org",
os: "Darwin",
xpcomabi: "ppc-gcc3,noarch-spidermonkey,x86-msvc",
versionRange: [],
},
{
guid: "test_bug393285_13@tests.mozilla.org",
os: "XPCShell",
xpcomabi: "ppc-gcc3,x86-msvc",
versionRange: [],
},
{
guid: "test_bug393285_14@tests.mozilla.org",
os: "XPCShell,WINNT",
xpcomabi: "ppc-gcc3,x86-msvc,noarch-spidermonkey",
versionRange: [],
},
];
add_task(async function setup() {
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
await promiseStartupManager();
for (let addon of ADDONS) {
await promiseInstallWebExtension({
manifest: {
name: addon.name,
version: addon.version,
browser_specific_settings: { gecko: { id: addon.id } },
},
});
}
let addons = await getAddons(ADDON_IDS);
for (let id of ADDON_IDS) {
equal(
addons.get(id).blocklistState,
Ci.nsIBlocklistService.STATE_NOT_BLOCKED,
`Add-on ${id} should not initially be blocked`
);
}
});
add_task(async function test_1() {
await AddonTestUtils.loadBlocklistRawData({ extensions: BLOCKLIST_DATA });
let addons = await getAddons(ADDON_IDS);
async function isBlocklisted(addon, appVer, toolkitVer) {
let state = await Blocklist.getAddonBlocklistState(
addon,
appVer,
toolkitVer
);
return state != Services.blocklist.STATE_NOT_BLOCKED;
}
for (let addon of ADDONS) {
let { id } = addon;
for (let blocklisted of addon.blocklisted || []) {
ok(
await isBlocklisted(addons.get(id), ...blocklisted),
`Add-on ${id} should be blocklisted in app/platform version ${blocklisted}`
);
}
for (let notBlocklisted of addon.notBlocklisted || []) {
ok(
!(await isBlocklisted(addons.get(id), ...notBlocklisted)),
`Add-on ${id} should not be blocklisted in app/platform version ${notBlocklisted}`
);
}
}
});