Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>setting-group Tests</title>
<link
rel="stylesheet"
/>
<link rel="stylesheet" href="chrome://global/skin/global.css" />
<script src="../../../../../toolkit/content/tests/widgets/lit-test-helpers.js"></script>
<script
type="module"
src="chrome://browser/content/preferences/widgets/setting-group.mjs"
></script>
<script
type="module"
src="chrome://browser/content/preferences/widgets/setting-control.mjs"
></script>
<script
type="module"
src="chrome://global/content/elements/moz-support-link.mjs"
></script>
<script
type="application/javascript"
src="chrome://global/content/preferencesBindings.js"
></script>
<script>
/* import-globals-from /toolkit/content/preferencesBindings.js */
let html, testHelpers;
const LABEL_L10N_ID = "browsing-use-autoscroll";
const GROUP_L10N_ID = "pane-experimental-reset";
function renderTemplate(config) {
return testHelpers.renderTemplate(html`
<setting-group
.config=${config}
.getSetting=${(...args) => Preferences.getSetting(...args)}
></setting-group>
`);
}
function waitForSettingChange(setting) {
return new Promise(resolve => {
setting.on("change", function handler() {
setting.off("change", handler);
resolve();
});
});
}
add_setup(async function setup() {
testHelpers = new InputTestHelpers();
({ html } = await testHelpers.setupLit());
testHelpers.setupTests({
templateFn: () => html`<setting-group></setting-group>`,
});
MozXULElement.insertFTLIfNeeded("branding/brand.ftl");
MozXULElement.insertFTLIfNeeded("browser/preferences/preferences.ftl");
});
add_task(async function testSettingGroupSimple() {
const PREF_ONE = "test.settings-group.itemone";
const SETTING_ONE = "setting-item-one";
const PREF_TWO = "test.settings-group.itemtwo";
const SETTING_TWO = "setting-item-two";
await SpecialPowers.pushPrefEnv({
set: [
[PREF_ONE, true],
[PREF_TWO, false],
["settings.revamp.design", true],
],
});
Preferences.addAll([
{ id: PREF_ONE, type: "bool" },
{ id: PREF_TWO, type: "bool" },
]);
Preferences.addSetting({
id: SETTING_ONE,
pref: PREF_ONE,
});
Preferences.addSetting({
id: SETTING_TWO,
pref: PREF_TWO,
});
let config = {
l10nId: GROUP_L10N_ID,
items: [
{ l10nId: LABEL_L10N_ID, id: SETTING_ONE },
{ l10nId: LABEL_L10N_ID, id: SETTING_TWO },
],
};
let result = await renderTemplate(config);
let group = result.querySelector("setting-group");
ok(group, "setting-group is created");
ok(group.config, "it got a config");
let fieldset = group.children[0];
is(fieldset.localName, "moz-fieldset", "First child is a fieldset");
is(
fieldset.dataset.l10nId,
GROUP_L10N_ID,
"Fieldset has the group label"
);
let [item1, item2] = fieldset.children;
is(item1.localName, "setting-control", "First setting-control");
is(item1.config.id, SETTING_ONE, "First setting-control id is correct");
is(item2.localName, "setting-control", "Second setting-control");
is(
item2.config.id,
SETTING_TWO,
"Second setting-control id is correct"
);
});
</script>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</html>