Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
// Test opening to the differerent panes and subcategories in Preferences
add_task(async function () {
let prefs = await openPreferencesViaOpenPreferencesAPI("panePrivacy");
is(prefs.selectedPane, "panePrivacy", "Privacy pane was selected");
prefs = await openPreferencesViaHash("privacy");
is(
prefs.selectedPane,
"panePrivacy",
"Privacy pane is selected when hash is 'privacy'"
);
prefs = await openPreferencesViaOpenPreferencesAPI("nonexistant-category");
is(
prefs.selectedPane,
"paneGeneral",
"General pane is selected by default when a nonexistant-category is requested"
);
prefs = await openPreferencesViaHash("nonexistant-category");
is(
prefs.selectedPane,
"paneGeneral",
"General pane is selected when hash is a nonexistant-category"
);
prefs = await openPreferencesViaHash();
is(prefs.selectedPane, "paneGeneral", "General pane is selected by default");
prefs = await openPreferencesViaOpenPreferencesAPI("privacy-reports", {
leaveOpen: true,
});
is(prefs.selectedPane, "panePrivacy", "Privacy pane is selected by default");
let doc = gBrowser.contentDocument;
is(
doc.location.hash,
"#privacy",
"The subcategory should be removed from the URI"
);
await TestUtils.waitForCondition(
() => doc.querySelector(".spotlight"),
"Wait for the reports section is spotlighted."
);
is(
doc.querySelector(".spotlight").getAttribute("data-subcategory"),
"reports",
"The reports section is spotlighted."
);
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});
// Test opening Preferences with subcategory on an existing Preferences tab. See bug 1358475.
add_task(async function () {
let prefs = await openPreferencesViaOpenPreferencesAPI("general", {
leaveOpen: true,
});
is(prefs.selectedPane, "paneGeneral", "General pane is selected by default");
let doc = gBrowser.contentDocument;
is(
doc.location.hash,
"#general",
"The subcategory should be removed from the URI"
);
// The reasons that here just call the `openPreferences` API without the helping function are
// - already opened one about:preferences tab up there and
// - the goal is to test on the existing tab and
// - using `openPreferencesViaOpenPreferencesAPI` would introduce more handling of additional about:blank and unneccessary event
await openPreferences("privacy-reports");
let selectedPane = gBrowser.contentWindow.history.state;
is(selectedPane, "panePrivacy", "Privacy pane should be selected");
is(
doc.location.hash,
"#privacy",
"The subcategory should be removed from the URI"
);
await TestUtils.waitForCondition(
() => doc.querySelector(".spotlight"),
"Wait for the reports section is spotlighted."
);
is(
doc.querySelector(".spotlight").getAttribute("data-subcategory"),
"reports",
"The reports section is spotlighted."
);
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});
// Test opening to a subcategory displays the correct values for preferences
add_task(async function () {
// Skip if crash reporting isn't enabled since the checkbox will be missing.
if (!AppConstants.MOZ_CRASHREPORTER) {
return;
}
await SpecialPowers.pushPrefEnv({
set: [["browser.crashReports.unsubmittedCheck.autoSubmit2", true]],
});
await openPreferencesViaOpenPreferencesAPI("privacy-reports", {
leaveOpen: true,
});
let doc = gBrowser.contentDocument;
ok(
doc.querySelector("#automaticallySubmitCrashesBox").checked,
"Checkbox for automatically submitting crashes should be checked when the pref is true and only Reports are requested"
);
BrowserTestUtils.removeTab(gBrowser.selectedTab);
await SpecialPowers.popPrefEnv();
});
add_task(async function () {
// Skip if crash reporting isn't enabled since the checkbox will be missing.
if (!AppConstants.MOZ_CRASHREPORTER) {
return;
}
await SpecialPowers.pushPrefEnv({
set: [["browser.crashReports.unsubmittedCheck.autoSubmit2", false]],
});
await openPreferencesViaOpenPreferencesAPI("privacy-reports", {
leaveOpen: true,
});
let doc = gBrowser.contentDocument;
ok(
!doc.querySelector("#automaticallySubmitCrashesBox").checked,
"Checkbox for automatically submitting crashes should not be checked when the pref is false only Reports are requested"
);
BrowserTestUtils.removeTab(gBrowser.selectedTab);
await SpecialPowers.popPrefEnv();
});
function openPreferencesViaHash(aPane) {
return new Promise(resolve => {
let finalPrefPaneLoaded = TestUtils.topicObserved(
"sync-pane-loaded",
() => true
);
gBrowser.selectedTab = BrowserTestUtils.addTab(
gBrowser,
"about:preferences" + (aPane ? "#" + aPane : "")
);
let newTabBrowser = gBrowser.selectedBrowser;
newTabBrowser.addEventListener(
"Initialized",
function () {
newTabBrowser.contentWindow.addEventListener(
"load",
async function () {
let win = gBrowser.contentWindow;
let selectedPane = win.history.state;
await finalPrefPaneLoaded;
gBrowser.removeCurrentTab();
resolve({ selectedPane });
},
{ once: true }
);
},
{ capture: true, once: true }
);
});
}