Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
*/
// Tests resetting of preferences in blocklist entry when an add-on is blocked.
// See bug 802434.
// useMLBF=true only supports blocking, not resetting prefs, since extensions
// cannot set arbitrary prefs any more after the removal of legacy addons.
enable_blocklist_v2_instead_of_useMLBF();
const BLOCKLIST_DATA = [
{
guid: "block1@tests.mozilla.org",
versionRange: [
{
severity: "1",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "2.*",
minVersion: "1",
},
],
},
],
prefs: ["test.blocklist.pref1", "test.blocklist.pref2"],
},
{
guid: "block2@tests.mozilla.org",
versionRange: [
{
severity: "3",
targetApplication: [
{
guid: "xpcshell@tests.mozilla.org",
maxVersion: "2.*",
minVersion: "1",
},
],
},
],
prefs: ["test.blocklist.pref3", "test.blocklist.pref4"],
},
];
add_task(async function setup() {
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
await promiseStartupManager();
// Add 2 extensions
await promiseInstallWebExtension({
manifest: {
name: "Blocked add-on-1 with to-be-reset prefs",
version: "1.0",
browser_specific_settings: { gecko: { id: "block1@tests.mozilla.org" } },
},
});
await promiseInstallWebExtension({
manifest: {
name: "Blocked add-on-2 with to-be-reset prefs",
version: "1.0",
browser_specific_settings: { gecko: { id: "block2@tests.mozilla.org" } },
},
});
// Pre-set the preferences that we expect to get reset.
Services.prefs.setIntPref("test.blocklist.pref1", 15);
Services.prefs.setIntPref("test.blocklist.pref2", 15);
Services.prefs.setBoolPref("test.blocklist.pref3", true);
Services.prefs.setBoolPref("test.blocklist.pref4", true);
// Before blocklist is loaded.
let [a1, a2] = await AddonManager.getAddonsByIDs([
"block1@tests.mozilla.org",
"block2@tests.mozilla.org",
]);
Assert.equal(a1.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
Assert.equal(a2.blocklistState, Ci.nsIBlocklistService.STATE_NOT_BLOCKED);
Assert.equal(Services.prefs.getIntPref("test.blocklist.pref1"), 15);
Assert.equal(Services.prefs.getIntPref("test.blocklist.pref2"), 15);
Assert.equal(Services.prefs.getBoolPref("test.blocklist.pref3"), true);
Assert.equal(Services.prefs.getBoolPref("test.blocklist.pref4"), true);
});
add_task(async function test_blocks() {
await AddonTestUtils.loadBlocklistRawData({ extensions: BLOCKLIST_DATA });
// Blocklist changes should have applied and the prefs must be reset.
let [a1, a2] = await AddonManager.getAddonsByIDs([
"block1@tests.mozilla.org",
"block2@tests.mozilla.org",
]);
Assert.notEqual(a1, null);
Assert.equal(a1.blocklistState, Ci.nsIBlocklistService.STATE_SOFTBLOCKED);
Assert.notEqual(a2, null);
Assert.equal(a2.blocklistState, Ci.nsIBlocklistService.STATE_BLOCKED);
// All these prefs must be reset to defaults.
Assert.equal(Services.prefs.prefHasUserValue("test.blocklist.pref1"), false);
Assert.equal(Services.prefs.prefHasUserValue("test.blocklist.pref2"), false);
Assert.equal(Services.prefs.prefHasUserValue("test.blocklist.pref3"), false);
Assert.equal(Services.prefs.prefHasUserValue("test.blocklist.pref4"), false);
});