Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
// Stories
const STORIES_SYSTEM_PREF =
"browser.newtabpage.activity-stream.feeds.system.topstories";
const STORIES_PREF =
"browser.newtabpage.activity-stream.feeds.section.topstories";
// Extra prefs relating to "manage topics" box button link
const SECTIONS_ENABLED_PREF =
"browser.newtabpage.activity-stream.discoverystream.sections.enabled";
const TOPIC_LABELS_ENABLED_PREF =
"browser.newtabpage.activity-stream.discoverystream.topicLabels.enabled";
const SECTIONS_PERSONALIZATION_ENABLED_PREF =
"browser.newtabpage.activity-stream.discoverystream.sections.personalization.enabled";
const SECTIONS_CUSTOMIZE_MENU_PANEL_ENABLED_PREF =
"browser.newtabpage.activity-stream.discoverystream.sections.customizeMenuPanel.enabled";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.settings-redesign.enabled", true],
// Opening preferences initializes FxA code which sets this pref.
// Track it to avoid test warnings.
["identity.fxaccounts.account.device.name", ""],
],
});
});
add_task(async function test_manage_topics_visible_when_all_deps_enabled() {
await SpecialPowers.pushPrefEnv({
set: [
[STORIES_SYSTEM_PREF, true],
[STORIES_PREF, true],
[SECTIONS_ENABLED_PREF, true],
[TOPIC_LABELS_ENABLED_PREF, true],
[SECTIONS_PERSONALIZATION_ENABLED_PREF, true],
[SECTIONS_CUSTOMIZE_MENU_PANEL_ENABLED_PREF, true],
],
});
let { win, tab } = await openHomePreferences();
let manageTopicsControl = await settingControlRenders("manageTopics", win);
ok(
manageTopicsControl,
"Manage topics box link exists when all deps are enabled"
);
ok(
BrowserTestUtils.isVisible(manageTopicsControl),
"Manage topics box link is visible when all dependencies are enabled"
);
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_manage_topics_hidden_when_any_dep_disabled() {
const dependencies = [
STORIES_PREF,
STORIES_SYSTEM_PREF,
SECTIONS_ENABLED_PREF,
TOPIC_LABELS_ENABLED_PREF,
SECTIONS_PERSONALIZATION_ENABLED_PREF,
SECTIONS_CUSTOMIZE_MENU_PANEL_ENABLED_PREF,
];
for (let dep of dependencies) {
// Set all prefs explicitly: the current dep to false, all others to true.
// This tests that disabling any single dependency hides the manage topics box link.
let prefSettings = [
[STORIES_SYSTEM_PREF, dep !== STORIES_SYSTEM_PREF],
[STORIES_PREF, dep !== STORIES_PREF],
[SECTIONS_ENABLED_PREF, dep !== SECTIONS_ENABLED_PREF],
[TOPIC_LABELS_ENABLED_PREF, dep !== TOPIC_LABELS_ENABLED_PREF],
[
SECTIONS_PERSONALIZATION_ENABLED_PREF,
dep !== SECTIONS_PERSONALIZATION_ENABLED_PREF,
],
[
SECTIONS_CUSTOMIZE_MENU_PANEL_ENABLED_PREF,
dep !== SECTIONS_CUSTOMIZE_MENU_PANEL_ENABLED_PREF,
],
];
await SpecialPowers.pushPrefEnv({
set: prefSettings,
});
let { win, tab } = await openHomePreferences();
let manageTopicsControl = getSettingControl("manageTopics", win);
ok(
!manageTopicsControl || BrowserTestUtils.isHidden(manageTopicsControl),
`Manage topics box link is hidden when ${dep} is disabled`
);
BrowserTestUtils.removeTab(tab);
}
});