summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_contentblocking_categories.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/browser_contentblocking_categories.js')
-rw-r--r--browser/components/preferences/tests/browser_contentblocking_categories.js487
1 files changed, 487 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_contentblocking_categories.js b/browser/components/preferences/tests/browser_contentblocking_categories.js
new file mode 100644
index 0000000000..3b9e16a2fe
--- /dev/null
+++ b/browser/components/preferences/tests/browser_contentblocking_categories.js
@@ -0,0 +1,487 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/* eslint-env webextensions */
+
+ChromeUtils.defineESModuleGetters(this, {
+ Preferences: "resource://gre/modules/Preferences.sys.mjs",
+});
+
+const TP_PREF = "privacy.trackingprotection.enabled";
+const TP_PBM_PREF = "privacy.trackingprotection.pbmode.enabled";
+const NCB_PREF = "network.cookie.cookieBehavior";
+const NCBP_PREF = "network.cookie.cookieBehavior.pbmode";
+const CAT_PREF = "browser.contentblocking.category";
+const FP_PREF = "privacy.trackingprotection.fingerprinting.enabled";
+const CM_PREF = "privacy.trackingprotection.cryptomining.enabled";
+const STP_PREF = "privacy.trackingprotection.socialtracking.enabled";
+const EMAIL_TP_PREF = "privacy.trackingprotection.emailtracking.enabled";
+const EMAIL_TP_PBM_PREF =
+ "privacy.trackingprotection.emailtracking.pbmode.enabled";
+const LEVEL2_PREF = "privacy.annotate_channels.strict_list.enabled";
+const REFERRER_PREF = "network.http.referer.disallowCrossSiteRelaxingDefault";
+const REFERRER_TOP_PREF =
+ "network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation";
+const OCSP_PREF = "privacy.partition.network_state.ocsp_cache";
+const QUERY_PARAM_STRIP_PREF = "privacy.query_stripping.enabled";
+const QUERY_PARAM_STRIP_PBM_PREF = "privacy.query_stripping.enabled.pbmode";
+const STRICT_DEF_PREF = "browser.contentblocking.features.strict";
+
+// Tests that the content blocking standard category definition is based on the default settings of
+// the content blocking prefs.
+// Changing the definition does not remove the user from the category.
+add_task(async function testContentBlockingStandardDefinition() {
+ Services.prefs.setStringPref(CAT_PREF, "strict");
+ Services.prefs.setStringPref(CAT_PREF, "standard");
+ is(
+ Services.prefs.getStringPref(CAT_PREF),
+ "standard",
+ `${CAT_PREF} starts on standard`
+ );
+
+ ok(
+ !Services.prefs.prefHasUserValue(TP_PREF),
+ `${TP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(TP_PBM_PREF),
+ `${TP_PBM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(FP_PREF),
+ `${FP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(CM_PREF),
+ `${CM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(STP_PREF),
+ `${STP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(EMAIL_TP_PREF),
+ `${EMAIL_TP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(EMAIL_TP_PBM_PREF),
+ `${EMAIL_TP_PBM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(NCB_PREF),
+ `${NCB_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(NCBP_PREF),
+ `${NCBP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(LEVEL2_PREF),
+ `${LEVEL2_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(REFERRER_PREF),
+ `${REFERRER_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(REFERRER_TOP_PREF),
+ `${REFERRER_TOP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(OCSP_PREF),
+ `${OCSP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(QUERY_PARAM_STRIP_PREF),
+ `${QUERY_PARAM_STRIP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(QUERY_PARAM_STRIP_PBM_PREF),
+ `${QUERY_PARAM_STRIP_PBM_PREF} pref has the default value`
+ );
+
+ let defaults = Services.prefs.getDefaultBranch("");
+ let originalTP = defaults.getBoolPref(TP_PREF);
+ let originalTPPBM = defaults.getBoolPref(TP_PBM_PREF);
+ let originalFP = defaults.getBoolPref(FP_PREF);
+ let originalCM = defaults.getBoolPref(CM_PREF);
+ let originalSTP = defaults.getBoolPref(STP_PREF);
+ let originalEmailTP = defaults.getBoolPref(EMAIL_TP_PREF);
+ let originalEmailTPPBM = defaults.getBoolPref(EMAIL_TP_PBM_PREF);
+ let originalNCB = defaults.getIntPref(NCB_PREF);
+ let originalNCBP = defaults.getIntPref(NCBP_PREF);
+ let originalLEVEL2 = defaults.getBoolPref(LEVEL2_PREF);
+ let originalREFERRER = defaults.getBoolPref(REFERRER_PREF);
+ let originalREFERRERTOP = defaults.getBoolPref(REFERRER_TOP_PREF);
+ let originalOCSP = defaults.getBoolPref(OCSP_PREF);
+ let originalQueryParamStrip = defaults.getBoolPref(QUERY_PARAM_STRIP_PREF);
+ let originalQueryParamStripPBM = defaults.getBoolPref(
+ QUERY_PARAM_STRIP_PBM_PREF
+ );
+
+ let nonDefaultNCB;
+ switch (originalNCB) {
+ case Ci.nsICookieService.BEHAVIOR_ACCEPT:
+ nonDefaultNCB = Ci.nsICookieService.BEHAVIOR_REJECT;
+ break;
+ default:
+ nonDefaultNCB = Ci.nsICookieService.BEHAVIOR_ACCEPT;
+ break;
+ }
+ let nonDefaultNCBP;
+ switch (originalNCBP) {
+ case Ci.nsICookieService.BEHAVIOR_ACCEPT:
+ nonDefaultNCBP = Ci.nsICookieService.BEHAVIOR_REJECT;
+ break;
+ default:
+ nonDefaultNCBP = Ci.nsICookieService.BEHAVIOR_ACCEPT;
+ break;
+ }
+ defaults.setIntPref(NCB_PREF, nonDefaultNCB);
+ defaults.setIntPref(NCBP_PREF, nonDefaultNCBP);
+ defaults.setBoolPref(TP_PREF, !originalTP);
+ defaults.setBoolPref(TP_PBM_PREF, !originalTPPBM);
+ defaults.setBoolPref(FP_PREF, !originalFP);
+ defaults.setBoolPref(CM_PREF, !originalCM);
+ defaults.setBoolPref(CM_PREF, !originalSTP);
+ defaults.setBoolPref(EMAIL_TP_PREF, !originalEmailTP);
+ defaults.setBoolPref(EMAIL_TP_PBM_PREF, !originalEmailTPPBM);
+ defaults.setIntPref(NCB_PREF, !originalNCB);
+ defaults.setBoolPref(LEVEL2_PREF, !originalLEVEL2);
+ defaults.setBoolPref(REFERRER_PREF, !originalREFERRER);
+ defaults.setBoolPref(REFERRER_TOP_PREF, !originalREFERRERTOP);
+ defaults.setBoolPref(OCSP_PREF, !originalOCSP);
+ defaults.setBoolPref(QUERY_PARAM_STRIP_PREF, !originalQueryParamStrip);
+ defaults.setBoolPref(QUERY_PARAM_STRIP_PBM_PREF, !originalQueryParamStripPBM);
+
+ ok(
+ !Services.prefs.prefHasUserValue(TP_PREF),
+ `${TP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(TP_PBM_PREF),
+ `${TP_PBM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(FP_PREF),
+ `${FP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(CM_PREF),
+ `${CM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(STP_PREF),
+ `${STP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(EMAIL_TP_PREF),
+ `${EMAIL_TP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(EMAIL_TP_PBM_PREF),
+ `${EMAIL_TP_PBM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(NCB_PREF),
+ `${NCB_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(NCBP_PREF),
+ `${NCBP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(LEVEL2_PREF),
+ `${LEVEL2_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(REFERRER_PREF),
+ `${REFERRER_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(REFERRER_TOP_PREF),
+ `${REFERRER_TOP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(OCSP_PREF),
+ `${OCSP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(QUERY_PARAM_STRIP_PREF),
+ `${QUERY_PARAM_STRIP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(QUERY_PARAM_STRIP_PBM_PREF),
+ `${QUERY_PARAM_STRIP_PBM_PREF} pref has the default value`
+ );
+
+ // cleanup
+ defaults.setIntPref(NCB_PREF, originalNCB);
+ defaults.setBoolPref(TP_PREF, originalTP);
+ defaults.setBoolPref(TP_PBM_PREF, originalTPPBM);
+ defaults.setBoolPref(FP_PREF, originalFP);
+ defaults.setBoolPref(CM_PREF, originalCM);
+ defaults.setBoolPref(STP_PREF, originalSTP);
+ defaults.setBoolPref(EMAIL_TP_PREF, originalEmailTP);
+ defaults.setBoolPref(EMAIL_TP_PBM_PREF, originalEmailTPPBM);
+ defaults.setIntPref(NCB_PREF, originalNCB);
+ defaults.setIntPref(NCBP_PREF, originalNCBP);
+ defaults.setBoolPref(LEVEL2_PREF, originalLEVEL2);
+ defaults.setBoolPref(REFERRER_PREF, originalREFERRER);
+ defaults.setBoolPref(REFERRER_TOP_PREF, originalREFERRERTOP);
+ defaults.setBoolPref(OCSP_PREF, originalOCSP);
+ defaults.setBoolPref(QUERY_PARAM_STRIP_PREF, originalQueryParamStrip);
+ defaults.setBoolPref(QUERY_PARAM_STRIP_PBM_PREF, originalQueryParamStripPBM);
+});
+
+// Tests that the content blocking strict category definition changes the behavior
+// of the strict category pref and all prefs it controls.
+// Changing the definition does not remove the user from the category.
+add_task(async function testContentBlockingStrictDefinition() {
+ let defaults = Services.prefs.getDefaultBranch("");
+ let originalStrictPref = defaults.getStringPref(STRICT_DEF_PREF);
+ defaults.setStringPref(
+ STRICT_DEF_PREF,
+ "tp,tpPrivate,fp,cm,cookieBehavior0,cookieBehaviorPBM0,stp,emailTP,emailTPPrivate,lvl2,rp,rpTop,ocsp,qps,qpsPBM"
+ );
+ Services.prefs.setStringPref(CAT_PREF, "strict");
+ is(
+ Services.prefs.getStringPref(CAT_PREF),
+ "strict",
+ `${CAT_PREF} has changed to strict`
+ );
+
+ ok(
+ !Services.prefs.prefHasUserValue(STRICT_DEF_PREF),
+ `We changed the default value of ${STRICT_DEF_PREF}`
+ );
+ is(
+ Services.prefs.getStringPref(STRICT_DEF_PREF),
+ "tp,tpPrivate,fp,cm,cookieBehavior0,cookieBehaviorPBM0,stp,emailTP,emailTPPrivate,lvl2,rp,rpTop,ocsp,qps,qpsPBM",
+ `${STRICT_DEF_PREF} changed to what we set.`
+ );
+
+ is(
+ Services.prefs.getBoolPref(TP_PREF),
+ true,
+ `${TP_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(TP_PBM_PREF),
+ true,
+ `${TP_PBM_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(FP_PREF),
+ true,
+ `${CM_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(CM_PREF),
+ true,
+ `${CM_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(STP_PREF),
+ true,
+ `${STP_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(EMAIL_TP_PREF),
+ true,
+ `${EMAIL_TP_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(EMAIL_TP_PBM_PREF),
+ true,
+ `${EMAIL_TP_PBM_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getIntPref(NCB_PREF),
+ Ci.nsICookieService.BEHAVIOR_ACCEPT,
+ `${NCB_PREF} has been set to BEHAVIOR_ACCEPT`
+ );
+ is(
+ Services.prefs.getIntPref(NCBP_PREF),
+ Ci.nsICookieService.BEHAVIOR_ACCEPT,
+ `${NCBP_PREF} has been set to BEHAVIOR_ACCEPT`
+ );
+ is(
+ Services.prefs.getBoolPref(LEVEL2_PREF),
+ true,
+ `${LEVEL2_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(REFERRER_PREF),
+ true,
+ `${REFERRER_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(REFERRER_TOP_PREF),
+ true,
+ `${REFERRER_TOP_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(OCSP_PREF),
+ true,
+ `${OCSP_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(QUERY_PARAM_STRIP_PREF),
+ true,
+ `${QUERY_PARAM_STRIP_PREF} pref has been set to true`
+ );
+ is(
+ Services.prefs.getBoolPref(QUERY_PARAM_STRIP_PBM_PREF),
+ true,
+ `${QUERY_PARAM_STRIP_PBM_PREF} pref has been set to true`
+ );
+
+ // Note, if a pref is not listed it will use the default value, however this is only meant as a
+ // backup if a mistake is made. The UI will not respond correctly.
+ defaults.setStringPref(STRICT_DEF_PREF, "");
+ ok(
+ !Services.prefs.prefHasUserValue(TP_PREF),
+ `${TP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(TP_PBM_PREF),
+ `${TP_PBM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(FP_PREF),
+ `${FP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(CM_PREF),
+ `${CM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(STP_PREF),
+ `${STP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(EMAIL_TP_PREF),
+ `${EMAIL_TP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(EMAIL_TP_PBM_PREF),
+ `${EMAIL_TP_PBM_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(NCB_PREF),
+ `${NCB_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(NCBP_PREF),
+ `${NCBP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(LEVEL2_PREF),
+ `${LEVEL2_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(REFERRER_PREF),
+ `${REFERRER_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(REFERRER_TOP_PREF),
+ `${REFERRER_TOP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(OCSP_PREF),
+ `${OCSP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(QUERY_PARAM_STRIP_PREF),
+ `${QUERY_PARAM_STRIP_PREF} pref has the default value`
+ );
+ ok(
+ !Services.prefs.prefHasUserValue(QUERY_PARAM_STRIP_PBM_PREF),
+ `${QUERY_PARAM_STRIP_PBM_PREF} pref has the default value`
+ );
+
+ defaults.setStringPref(
+ STRICT_DEF_PREF,
+ "-tpPrivate,-fp,-cm,-tp,cookieBehavior3,cookieBehaviorPBM2,-stp,-emailTP,-emailTPPrivate,-lvl2,-rp,-ocsp,-qps,-qpsPBM"
+ );
+ is(
+ Services.prefs.getBoolPref(TP_PREF),
+ false,
+ `${TP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(TP_PBM_PREF),
+ false,
+ `${TP_PBM_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(FP_PREF),
+ false,
+ `${FP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(CM_PREF),
+ false,
+ `${CM_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(STP_PREF),
+ false,
+ `${STP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(EMAIL_TP_PREF),
+ false,
+ `${EMAIL_TP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(EMAIL_TP_PBM_PREF),
+ false,
+ `${EMAIL_TP_PBM_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getIntPref(NCB_PREF),
+ Ci.nsICookieService.BEHAVIOR_LIMIT_FOREIGN,
+ `${NCB_PREF} has been set to BEHAVIOR_REJECT_TRACKER`
+ );
+ is(
+ Services.prefs.getIntPref(NCBP_PREF),
+ Ci.nsICookieService.BEHAVIOR_REJECT,
+ `${NCBP_PREF} has been set to BEHAVIOR_REJECT`
+ );
+ is(
+ Services.prefs.getBoolPref(LEVEL2_PREF),
+ false,
+ `${LEVEL2_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(REFERRER_PREF),
+ false,
+ `${REFERRER_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(REFERRER_TOP_PREF),
+ false,
+ `${REFERRER_TOP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(OCSP_PREF),
+ false,
+ `${OCSP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(QUERY_PARAM_STRIP_PREF),
+ false,
+ `${QUERY_PARAM_STRIP_PREF} pref has been set to false`
+ );
+ is(
+ Services.prefs.getBoolPref(QUERY_PARAM_STRIP_PBM_PREF),
+ false,
+ `${QUERY_PARAM_STRIP_PBM_PREF} pref has been set to false`
+ );
+
+ // cleanup
+ defaults.setStringPref(STRICT_DEF_PREF, originalStrictPref);
+ Services.prefs.setStringPref(CAT_PREF, "standard");
+});