Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: toolkit/components/search/tests/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
let engine;
let appDefaultEngine;
add_setup(async function () {
useHttpServer();
Services.prefs.setBoolPref(
SearchUtils.BROWSER_SEARCH_PREF + "separatePrivateDefault.ui.enabled",
true
);
Services.prefs.setBoolPref(
SearchUtils.BROWSER_SEARCH_PREF + "separatePrivateDefault",
true
);
appDefaultEngine = await SearchService.getDefault();
});
add_task(async function test_addingEngine_opensearch() {
const addEngineObserver = new SearchObserver([
[
// engine-added
// Engine was added to the store by the search service.
SearchUtils.MODIFIED_TYPE.ADDED,
"Test search engine",
],
]);
await SearchTestUtils.installOpenSearchEngine({
url: `${gHttpURL}/opensearch/generic1.xml`,
});
engine = await addEngineObserver.promise;
engine = SearchService.getEngineByName("Test search engine");
Assert.ok(engine, "Should have added the engine");
});
add_task(async function test_addingEngine_webExtension() {
const addEngineObserver = new SearchObserver([
[
// engine-added
// Engine was added to the store by the search service.
SearchUtils.MODIFIED_TYPE.ADDED,
"Example Engine",
],
]);
await SearchTestUtils.installSearchExtension({
name: "Example Engine",
});
await addEngineObserver.promise;
let webExtensionEngine = SearchService.getEngineByName("Example Engine");
Assert.ok(webExtensionEngine, "Should have added the web extension engine");
});
async function defaultNotificationTest(
setPrivateDefault,
expectNotificationForPrivate
) {
let expected = expectNotificationForPrivate
? [[SearchUtils.MODIFIED_TYPE.DEFAULT_PRIVATE, engine.name]]
: [[SearchUtils.MODIFIED_TYPE.DEFAULT, engine.name]];
const defaultObserver = new SearchObserver(expected);
await SearchService[setPrivateDefault ? "setDefaultPrivate" : "setDefault"](
engine,
SearchService.CHANGE_REASON.UNKNOWN
);
await defaultObserver.promise;
}
add_task(async function test_defaultEngine_notifications() {
await defaultNotificationTest(false, false);
});
add_task(async function test_defaultPrivateEngine_notifications() {
await defaultNotificationTest(true, true);
});
add_task(
async function test_defaultPrivateEngine_notifications_when_not_enabled() {
await SearchService.setDefault(
appDefaultEngine,
SearchService.CHANGE_REASON.UNKNOWN
);
Services.prefs.setBoolPref(
SearchUtils.BROWSER_SEARCH_PREF + "separatePrivateDefault",
false
);
await defaultNotificationTest(true, true);
}
);
add_task(async function test_removeEngine() {
await SearchService.setDefault(engine, SearchService.CHANGE_REASON.UNKNOWN);
await SearchService.setDefaultPrivate(
engine,
SearchService.CHANGE_REASON.UNKNOWN
);
const removedObserver = new SearchObserver([
[SearchUtils.MODIFIED_TYPE.DEFAULT, appDefaultEngine.name],
[SearchUtils.MODIFIED_TYPE.DEFAULT_PRIVATE, appDefaultEngine.name],
[SearchUtils.MODIFIED_TYPE.REMOVED, engine.name],
]);
await SearchService.removeEngine(engine);
await removedObserver.promise;
});