/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // 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], }); });