Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: toolkit/components/ipprotection/tests/xpcshell/xpcshell.toml
/* 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
"use strict";
const { IPPSessionPrefManagerClass } = ChromeUtils.importESModule(
"moz-src:///toolkit/components/ipprotection/IPPSessionPrefManager.sys.mjs"
);
const TEST_PREF = "browser.ipProtection.guardian.endpoint";
add_setup(function () {
registerCleanupFunction(() => {
Services.prefs.clearUserPref(TEST_PREF);
});
});
/**
* start() sets the pref; stop() resets it back.
*/
add_task(function test_start_sets_stop_resets() {
Services.prefs.clearUserPref(TEST_PREF);
let manager = new IPPSessionPrefManagerClass([[TEST_PREF, TEST_VALUE]]);
manager.start();
Assert.equal(
Services.prefs.getCharPref(TEST_PREF, ""),
TEST_VALUE,
"start() should set the managed pref"
);
manager.stop();
Assert.ok(
!Services.prefs.prefHasUserValue(TEST_PREF),
"stop() should clear the managed pref"
);
});
/**
* When the pref already has a user value, start() must not overwrite it and
* stop() must not clear it.
*/
add_task(function test_user_set_pref_is_not_touched() {
Services.prefs.setCharPref(TEST_PREF, USER_VALUE);
let manager = new IPPSessionPrefManagerClass([[TEST_PREF, TEST_VALUE]]);
manager.start();
Assert.equal(
Services.prefs.getCharPref(TEST_PREF, ""),
USER_VALUE,
"start() should not overwrite a user-set pref"
);
manager.stop();
Assert.equal(
Services.prefs.getCharPref(TEST_PREF, ""),
USER_VALUE,
"stop() should not clear a pref it did not change"
);
Services.prefs.clearUserPref(TEST_PREF);
});
/**
* When start() changes the pref and the user subsequently changes it again,
* stop() must leave the user's value in place.
*/
add_task(function test_user_change_after_start_prevents_reset() {
Services.prefs.clearUserPref(TEST_PREF);
let manager = new IPPSessionPrefManagerClass([[TEST_PREF, TEST_VALUE]]);
manager.start();
Assert.equal(
Services.prefs.getCharPref(TEST_PREF, ""),
TEST_VALUE,
"start() should set the managed pref"
);
// Simulate the user changing the pref (e.g. via about:config).
Services.prefs.setCharPref(TEST_PREF, USER_CHANGED_VALUE);
manager.stop();
Assert.equal(
Services.prefs.getCharPref(TEST_PREF, ""),
USER_CHANGED_VALUE,
"stop() should not reset a pref the user subsequently changed"
);
Services.prefs.clearUserPref(TEST_PREF);
});