Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const { ExperimentAPI } = ChromeUtils.importESModule(
);
const { ExperimentFakes } = ChromeUtils.importESModule(
);
ChromeUtils.defineESModuleGetters(this, {
});
const CONFIG_DEFAULT = [
{
webExtension: { id: "basic@search.mozilla.org" },
appliesTo: [{ included: { everywhere: true } }],
default: "yes",
},
{
webExtension: { id: "private@search.mozilla.org" },
appliesTo: [
{
experiment: "testing",
included: { everywhere: true },
},
],
defaultPrivate: "yes",
},
];
const CONFIG_V2 = [
{
recordType: "engine",
identifier: "basic",
base: {
name: "basic",
urls: {
search: {
searchTermParamName: "q",
},
},
},
variants: [{ environment: { allRegionsAndLocales: true } }],
},
{
recordType: "engine",
identifier: "private",
base: {
name: "private",
urls: {
search: {
searchTermParamName: "q",
},
},
},
variants: [{ environment: { allRegionsAndLocales: true } }],
},
{
recordType: "defaultEngines",
globalDefault: "basic",
globalDefaultPrivate: "private",
specificDefaults: [],
},
{
recordType: "engineOrders",
orders: [],
},
];
SearchTestUtils.init(this);
add_setup(async () => {
// Use engines in test directory
let searchExtensions = getChromeDir(getResolvedURI(gTestPath));
searchExtensions.append("search-engines");
await SearchTestUtils.useMochitestEngines(searchExtensions);
// Current default values.
await SpecialPowers.pushPrefEnv({
set: [
["browser.search.separatePrivateDefault.ui.enabled", false],
["browser.search.separatePrivateDefault.urlbarResult.enabled", false],
["browser.search.separatePrivateDefault", true],
["browser.urlbar.suggest.searches", true],
],
});
SearchTestUtils.useMockIdleService();
await SearchTestUtils.updateRemoteSettingsConfig(
SearchUtils.newSearchConfigEnabled ? CONFIG_V2 : CONFIG_DEFAULT
);
registerCleanupFunction(async () => {
let settingsWritten = SearchTestUtils.promiseSearchNotification(
"write-settings-to-disk-complete"
);
await SearchTestUtils.updateRemoteSettingsConfig();
await settingsWritten;
});
});
add_task(async function test_nimbus_experiment() {
Assert.equal(
Services.search.defaultPrivateEngine.name,
"basic",
"Should have basic as private default while not in experiment"
);
await ExperimentAPI.ready();
let reloadObserved =
SearchTestUtils.promiseSearchNotification("engines-reloaded");
let doExperimentCleanup = await ExperimentFakes.enrollWithFeatureConfig({
featureId: "searchConfiguration",
value: {
seperatePrivateDefaultUIEnabled: true,
seperatePrivateDefaultUrlbarResultEnabled: false,
experiment: "testing",
},
});
await reloadObserved;
Assert.equal(
Services.search.defaultPrivateEngine.name,
"private",
"Should have private as private default while in experiment"
);
reloadObserved =
SearchTestUtils.promiseSearchNotification("engines-reloaded");
await doExperimentCleanup();
await reloadObserved;
Assert.equal(
Services.search.defaultPrivateEngine.name,
"basic",
"Should turn off private default and restore default engine after experiment"
);
});
add_task(async function test_nimbus_experiment_urlbar_result_enabled() {
Assert.equal(
Services.search.defaultPrivateEngine.name,
"basic",
"Should have basic as private default while not in experiment"
);
await ExperimentAPI.ready();
let reloadObserved =
SearchTestUtils.promiseSearchNotification("engines-reloaded");
let doExperimentCleanup = await ExperimentFakes.enrollWithFeatureConfig({
featureId: "searchConfiguration",
value: {
seperatePrivateDefaultUIEnabled: true,
seperatePrivateDefaultUrlbarResultEnabled: true,
experiment: "testing",
},
});
await reloadObserved;
Assert.equal(
Services.search.separatePrivateDefaultUrlbarResultEnabled,
true,
"Should have set the urlbar result enabled value to true"
);
reloadObserved =
SearchTestUtils.promiseSearchNotification("engines-reloaded");
await doExperimentCleanup();
await reloadObserved;
Assert.equal(
Services.search.defaultPrivateEngine.name,
"basic",
"Should turn off private default and restore default engine after experiment"
);
});
add_task(async function test_non_experiment_prefs() {
await SpecialPowers.pushPrefEnv({
set: [["browser.search.separatePrivateDefault.ui.enabled", false]],
});
let uiPref = () =>
Services.prefs.getBoolPref(
"browser.search.separatePrivateDefault.ui.enabled"
);
Assert.equal(uiPref(), false, "defaulted false");
await ExperimentAPI.ready();
let doExperimentCleanup = await ExperimentFakes.enrollWithFeatureConfig({
featureId: "privatesearch",
value: {
seperatePrivateDefaultUIEnabled: true,
},
});
Assert.equal(uiPref(), false, "Pref did not change without experiment");
await doExperimentCleanup();
await SpecialPowers.popPrefEnv();
});