Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: debug
- Manifest: toolkit/components/antitracking/test/browser/browser.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
const { ExperimentAPI } = ChromeUtils.importESModule(
"resource://nimbus/ExperimentAPI.sys.mjs"
);
const { NimbusTestUtils } = ChromeUtils.importESModule(
);
add_task(async function test_etp_features() {
await ExperimentAPI.ready();
info("Set the ETP category to strict");
await SpecialPowers.pushPrefEnv({
set: [["browser.contentblocking.category", "strict"]],
});
// Enroll with the strict ETP features, and disable some features in the
// enrollment.
info("Enroll with the strict ETP features.");
let doExperimentCleanup = await NimbusTestUtils.enrollWithFeatureConfig({
featureId: "etpStrictFeatures",
value: {
features:
"-tp,-tpPrivate,cookieBehavior0,cookieBehaviorPBM0,cm,fp,stp,emailTP,emailTPPrivate,lvl2,rp,rpTop,ocsp,qps,qpsPBM,fpp,fppPrivate,-3pcd",
},
});
info("Check the strict ETP related prefs are set correctly.");
is(
Services.prefs.getCharPref("browser.contentblocking.features.strict"),
"-tp,-tpPrivate,cookieBehavior0,cookieBehaviorPBM0,cm,fp,stp,emailTP,emailTPPrivate,lvl2,rp,rpTop,ocsp,qps,qpsPBM,fpp,fppPrivate,-3pcd",
"The strict ETP features should be set correctly"
);
is(
Services.prefs
.getDefaultBranch("")
.getCharPref("browser.contentblocking.features.strict"),
"-tp,-tpPrivate,cookieBehavior0,cookieBehaviorPBM0,cm,fp,stp,emailTP,emailTPPrivate,lvl2,rp,rpTop,ocsp,qps,qpsPBM,fpp,fppPrivate,-3pcd",
"The strict ETP features should be set correctly to the default branch"
);
is(
Services.prefs.getBoolPref("privacy.trackingprotection.enabled"),
false,
"The tracking protection pref has been set correctly"
);
is(
Services.prefs.getBoolPref("privacy.trackingprotection.enabled"),
false,
"The tracking protection PBM pref has been set correctly"
);
is(
Services.prefs.getBoolPref(
"network.cookie.cookieBehavior.optInPartitioning"
),
false,
"The 3pcd pref has been set correctly"
);
is(
Services.prefs.getIntPref("network.cookie.cookieBehavior"),
Ci.nsICookieService.BEHAVIOR_ACCEPT,
"The cookieBehavior pref has been set correctly"
);
is(
Services.prefs.getIntPref("network.cookie.cookieBehavior.pbmode"),
Ci.nsICookieService.BEHAVIOR_ACCEPT,
"The cookieBehavior PBM pref has been set correctly"
);
info("Ensure we still remain in strict mode.");
is(
Services.prefs.getCharPref("browser.contentblocking.category"),
"strict",
"The ETP category should remain strict"
);
await doExperimentCleanup();
// Reset the ETP category to standard.
Services.prefs.setStringPref("browser.contentblocking.category", "standard");
});
// Test that nimbus enrollment changing strict ETP features does not reset
// user-modified allow list preferences (Bug 2022221).
add_task(async function test_etp_features_preserve_allow_list_prefs() {
const BASELINE_PREF =
"privacy.trackingprotection.allow_list.baseline.enabled";
const CONVENIENCE_PREF =
"privacy.trackingprotection.allow_list.convenience.enabled";
await ExperimentAPI.ready();
info("Set the ETP category to strict");
await SpecialPowers.pushPrefEnv({
set: [["browser.contentblocking.category", "strict"]],
});
info("Simulate user disabling allow list baseline pref");
Services.prefs.setBoolPref(BASELINE_PREF, false);
Services.prefs.setBoolPref(CONVENIENCE_PREF, false);
is(
Services.prefs.getBoolPref(BASELINE_PREF),
false,
"Baseline pref should be false before enrollment"
);
is(
Services.prefs.getBoolPref(CONVENIENCE_PREF),
false,
"Convenience pref should be false before enrollment"
);
info("Enroll with the strict ETP features.");
let doExperimentCleanup = await NimbusTestUtils.enrollWithFeatureConfig({
featureId: "etpStrictFeatures",
value: {
features:
"-tp,-tpPrivate,cookieBehavior0,cookieBehaviorPBM0,cm,fp,stp,emailTP,emailTPPrivate,lvl2,rp,rpTop,ocsp,qps,qpsPBM,fpp,fppPrivate,-3pcd",
},
});
info("Check that allow list prefs are preserved after nimbus enrollment.");
is(
Services.prefs.getBoolPref(BASELINE_PREF),
false,
"Baseline pref should remain false after nimbus enrollment"
);
is(
Services.prefs.getBoolPref(CONVENIENCE_PREF),
false,
"Convenience pref should remain false after nimbus enrollment"
);
info("Ensure we still remain in strict mode.");
is(
Services.prefs.getCharPref("browser.contentblocking.category"),
"strict",
"The ETP category should remain strict"
);
await doExperimentCleanup();
Services.prefs.clearUserPref(BASELINE_PREF);
Services.prefs.clearUserPref(CONVENIENCE_PREF);
Services.prefs.setStringPref("browser.contentblocking.category", "standard");
});
// Test that nimbus enrollment changing network.lna.etp.enabled does not reset
// user-modified allow list preferences (Bug 2022221).
add_task(async function test_lna_etp_nimbus_preserves_allow_list_prefs() {
const BASELINE_PREF =
"privacy.trackingprotection.allow_list.baseline.enabled";
const CONVENIENCE_PREF =
"privacy.trackingprotection.allow_list.convenience.enabled";
await ExperimentAPI.ready();
info("Set the ETP category to strict");
await SpecialPowers.pushPrefEnv({
set: [["browser.contentblocking.category", "strict"]],
});
info("Simulate user disabling allow list prefs");
Services.prefs.setBoolPref(BASELINE_PREF, false);
Services.prefs.setBoolPref(CONVENIENCE_PREF, false);
is(
Services.prefs.getBoolPref(BASELINE_PREF),
false,
"Baseline pref should be false before LNA enrollment"
);
info("Enroll with the localNetworkAccess feature to enable LNA with ETP.");
let doExperimentCleanup = await NimbusTestUtils.enrollWithFeatureConfig({
featureId: "localNetworkAccess",
value: {
enableLNAWithETPStrict: true,
},
});
info(
"Check that allow list prefs are preserved after LNA nimbus enrollment."
);
is(
Services.prefs.getBoolPref(BASELINE_PREF),
false,
"Baseline pref should remain false after LNA nimbus enrollment"
);
is(
Services.prefs.getBoolPref(CONVENIENCE_PREF),
false,
"Convenience pref should remain false after LNA nimbus enrollment"
);
info("Ensure we still remain in strict mode.");
is(
Services.prefs.getCharPref("browser.contentblocking.category"),
"strict",
"The ETP category should remain strict"
);
await doExperimentCleanup();
Services.prefs.clearUserPref(BASELINE_PREF);
Services.prefs.clearUserPref(CONVENIENCE_PREF);
Services.prefs.setStringPref("browser.contentblocking.category", "standard");
});