74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests the removal of an engine is persisted in search settings.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
const CONF_WITH_TEMP = [
|
|
{ identifier: "permanent_engine" },
|
|
{ identifier: "temp_engine" },
|
|
];
|
|
|
|
const CONF_WITHOUT_TEMP = [{ identifier: "permanent_engine" }];
|
|
|
|
async function startup() {
|
|
let settingsFileWritten = promiseAfterSettings();
|
|
let ss = new SearchService();
|
|
await ss.init(false);
|
|
await settingsFileWritten;
|
|
return ss;
|
|
}
|
|
|
|
async function visibleEngines(ss) {
|
|
return (await ss.getVisibleEngines()).map(e => e._name);
|
|
}
|
|
|
|
add_setup(async function () {
|
|
SearchTestUtils.setRemoteSettingsConfig(CONF_WITH_TEMP);
|
|
// This is only needed as otherwise events will not be properly notified
|
|
// due to https://searchfox.org/mozilla-central/rev/5f0a7ca8968ac5cef8846e1d970ef178b8b76dcc/toolkit/components/search/SearchSettings.sys.mjs#41-42
|
|
let settingsFileWritten = promiseAfterSettings();
|
|
await Services.search.init(false);
|
|
Services.search.wrappedJSObject._removeObservers();
|
|
await settingsFileWritten;
|
|
});
|
|
|
|
add_task(async function () {
|
|
let ss = await startup();
|
|
Assert.ok(
|
|
(await visibleEngines(ss)).includes("temp_engine"),
|
|
"Should have both engines on first startup"
|
|
);
|
|
|
|
let settingsFileWritten = promiseAfterSettings();
|
|
let engine = await ss.getEngineByName("temp_engine");
|
|
await ss.removeEngine(engine);
|
|
await settingsFileWritten;
|
|
|
|
Assert.ok(
|
|
!(await visibleEngines(ss)).includes("temp_engine"),
|
|
"temp_engine has been removed, only permanent_engine should remain"
|
|
);
|
|
|
|
ss._removeObservers();
|
|
SearchTestUtils.setRemoteSettingsConfig(CONF_WITHOUT_TEMP);
|
|
ss = await startup();
|
|
|
|
Assert.ok(
|
|
!(await visibleEngines(ss)).includes("temp_engine"),
|
|
"Updated to new configuration that doesnt have temp_engine"
|
|
);
|
|
|
|
ss._removeObservers();
|
|
SearchTestUtils.setRemoteSettingsConfig(CONF_WITH_TEMP);
|
|
|
|
ss = await startup();
|
|
|
|
Assert.ok(
|
|
!(await visibleEngines(ss)).includes("temp_engine"),
|
|
"Configuration now includes temp_engine but we should remember its removal"
|
|
);
|
|
});
|