Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
async function openPrefsWithSettings({ allEnabled, sectionEnabled }) {
await SpecialPowers.pushPrefEnv({
set: [
["browser.settings-redesign.enabled", allEnabled],
["browser.settings-redesign.mysection.enabled", sectionEnabled],
],
});
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
let doc = gBrowser.selectedBrowser.contentDocument;
let win = doc.ownerGlobal;
win.Preferences.addSetting({
id: "testSetting",
get: () => true,
});
win.SettingGroupManager.registerGroup("mysection", {
inProgress: true,
l10nId: "downloads-header-2",
headingLevel: 2,
items: [
{
id: "testSetting",
controlAttrs: {
label: "Test setting",
},
},
],
});
let zoomGroup = doc.getElementById("zoomGroup");
let legacyGroup = doc.createXULElement("groupbox");
legacyGroup.id = "mysectionGroup";
legacyGroup.setAttribute("data-srd-groupid", "mysection");
legacyGroup.setAttribute("data-category", "paneGeneral");
legacyGroup.hidden = true;
let mysectionGroup = doc.createElement("setting-group");
mysectionGroup.setAttribute("groupid", "mysection");
mysectionGroup.setAttribute("data-category", "paneGeneral");
mysectionGroup.hidden = true;
zoomGroup.parentElement.insertBefore(mysectionGroup, zoomGroup);
zoomGroup.parentElement.insertBefore(legacyGroup, zoomGroup);
win.initSettingGroup("mysection");
let paneLoaded = waitForPaneChange("general");
EventUtils.synthesizeMouseAtCenter(
doc.getElementById("category-general"),
{},
win
);
await paneLoaded;
return doc;
}
add_task(async function test_section_disabled() {
try {
let doc = await openPrefsWithSettings({
allEnabled: false,
sectionEnabled: false,
});
let legacyGroup = doc.getElementById("mysectionGroup");
let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]');
ok(legacyGroup.checkVisibility(), "The legacy group is visible");
is(
legacyGroup.dataset.category,
"paneGeneral",
"The legacy group has a category"
);
ok(
!legacyGroup.hasAttribute("data-hidden-from-search"),
"The legacy group is visible to search"
);
ok(!redesignGroup, "The redesign group was removed");
} finally {
gBrowser.removeCurrentTab();
}
});
add_task(async function test_section_enabled() {
let doc = await openPrefsWithSettings({
allEnabled: false,
sectionEnabled: true,
});
let legacyGroup = doc.getElementById("mysectionGroup");
let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]');
ok(!legacyGroup.checkVisibility(), "The legacy group is hidden");
ok(!legacyGroup.dataset.category, "The legacy group category is removed");
is(
legacyGroup.getAttribute("data-hidden-from-search"),
"true",
"The legacy group is hidden from search"
);
ok(redesignGroup.checkVisibility(), "The redesign group is visible");
is(
redesignGroup.dataset.category,
"paneGeneral",
"The redesign group has a category"
);
gBrowser.removeCurrentTab();
});
add_task(async function test_all_enabled() {
let doc = await openPrefsWithSettings({
allEnabled: true,
sectionEnabled: false,
});
let legacyGroup = doc.getElementById("mysectionGroup");
let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]');
ok(!legacyGroup.checkVisibility(), "The legacy group is hidden");
ok(!legacyGroup.dataset.category, "The legacy group category is removed");
is(
legacyGroup.getAttribute("data-hidden-from-search"),
"true",
"The legacy group is hidden from search"
);
ok(redesignGroup.checkVisibility(), "The redesign group is visible");
is(
redesignGroup.dataset.category,
"paneGeneral",
"The redesign group has a category"
);
gBrowser.removeCurrentTab();
});