summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_prefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_prefs.js')
-rw-r--r--toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_prefs.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_prefs.js b/toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_prefs.js
new file mode 100644
index 0000000000..42eb1305c4
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_prefs.js
@@ -0,0 +1,106 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// 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);
+});