Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'linux' && os_version == '18.04' && asan OR os == 'linux' && os_version == '18.04' && tsan OR win11_2009 && asan
- Manifest: browser/components/preferences/tests/browser.toml
/* Any copyright is dedicated to the Public Domain.
// This tests the Privacy pane's Firefox Suggest UI.
"use strict";
ChromeUtils.defineESModuleGetters(this, {
QuickSuggest: "resource:///modules/QuickSuggest.sys.mjs",
});
const DATA_COLLECTION_TOGGLE_ID = "firefoxSuggestDataCollectionPrivacyToggle";
// Maps `SETTINGS_UI` values to expected visibility state objects. See
// `assertSuggestVisibility()` in `head.js` for info on the state objects.
const EXPECTED = {
[QuickSuggest.SETTINGS_UI.FULL]: {
[DATA_COLLECTION_TOGGLE_ID]: { isVisible: true },
},
[QuickSuggest.SETTINGS_UI.NONE]: {
[DATA_COLLECTION_TOGGLE_ID]: { isVisible: false },
},
[QuickSuggest.SETTINGS_UI.OFFLINE_ONLY]: {
[DATA_COLLECTION_TOGGLE_ID]: { isVisible: false },
},
};
// This test can take a while due to the many permutations some of these tasks
// run through, so request a longer timeout.
requestLongerTimeout(10);
// The following tasks check the initial visibility of the Firefox Suggest UI
// and the visibility after installing a Nimbus experiment.
add_task(async function initiallyDisabled_disable() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: false,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
nimbusVariables: {
quickSuggestEnabled: false,
},
});
});
add_task(async function initiallyDisabled_disable_settingsUIFull() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: false,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
nimbusVariables: {
quickSuggestEnabled: false,
// `quickSuggestEnabled: false` should override this, so the Suggest
// settings should not be visible (`initialExpected` should persist).
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.FULL,
},
});
});
add_task(async function initiallyDisabled_enable() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: false,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
nimbusVariables: {
quickSuggestEnabled: true,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
});
});
add_task(async function initiallyDisabled_enable_settingsUiFull() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: false,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
nimbusVariables: {
quickSuggestEnabled: true,
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.FULL,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
});
});
add_task(async function initiallyDisabled_enable_settingsUiNone() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: false,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
nimbusVariables: {
quickSuggestEnabled: true,
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.NONE,
},
});
});
add_task(async function initiallyDisabled_enable_settingsUiOfflineOnly() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: false,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
nimbusVariables: {
quickSuggestEnabled: true,
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.OFFLINE_ONLY,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.OFFLINE_ONLY],
});
});
add_task(async function initiallyEnabled_disable() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: true,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
nimbusVariables: {
quickSuggestEnabled: false,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
});
});
add_task(async function initiallyEnabled_disable_settingsUiFull() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: true,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
nimbusVariables: {
quickSuggestEnabled: false,
// `quickSuggestEnabled: false` should override this, so the Suggest
// settings should not be visible.
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.FULL,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
});
});
add_task(async function initiallyEnabled_enable() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: true,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
nimbusVariables: {
quickSuggestEnabled: true,
},
});
});
add_task(async function initiallyEnabled_settingsUiFull() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: true,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
nimbusVariables: {
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.FULL,
},
});
});
add_task(async function initiallyEnabled_settingsUiNone() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: true,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
nimbusVariables: {
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.NONE,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.NONE],
});
});
add_task(async function initiallyEnabled_settingsUiOfflineOnly() {
await doSuggestVisibilityTest({
pane: "privacy",
initialSuggestEnabled: true,
initialExpected: EXPECTED[QuickSuggest.SETTINGS_UI.FULL],
nimbusVariables: {
quickSuggestSettingsUi: QuickSuggest.SETTINGS_UI.OFFLINE_ONLY,
},
newExpected: EXPECTED[QuickSuggest.SETTINGS_UI.OFFLINE_ONLY],
});
});