Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
const { GenAI } = ChromeUtils.importESModule(
"resource:///modules/GenAI.sys.mjs"
);
registerCleanupFunction(() =>
Services.prefs.clearUserPref("browser.ml.chat.prompts.test")
);
const DEFAULT_CONTEXT = { provider: "" };
async function promptCount(context = DEFAULT_CONTEXT) {
return (await GenAI.getContextualPrompts(context)).length;
}
/**
* Check prompts from prefs are used
*/
add_task(async function test_prompt_prefs() {
const origPrompts = await promptCount();
Services.prefs.setStringPref("browser.ml.chat.prompts.test", "{}");
Assert.equal(await promptCount(), origPrompts + 1, "Added a prompt");
Services.prefs.setStringPref(
"browser.ml.chat.prompts.test",
JSON.stringify({ targeting: "false" })
);
Assert.equal(
await promptCount(),
origPrompts,
"Prompt not added for targeting"
);
});
/**
* Check context is used for targeting
*/
add_task(async function test_prompt_context() {
Services.prefs.setStringPref(
"browser.ml.chat.prompts.test",
JSON.stringify({ targeting: "provider" })
);
const origPrompts = await promptCount();
Assert.equal(
await promptCount({ provider: "localhost" }),
origPrompts + 1,
"Added contextual prompt"
);
Assert.equal(
await promptCount(),
origPrompts,
"Prompt not added for contextual targeting"
);
});
/**
* Check that prompts can be localized
*/
add_task(async function test_prompt_l10n() {
Services.prefs.setStringPref(
"browser.ml.chat.prompts.test",
JSON.stringify({
l10nId: "genai-prompts-summarize",
label: "bad",
test: true,
})
);
const custom = (await GenAI.getContextualPrompts(DEFAULT_CONTEXT)).find(
prompt => prompt.id == null
);
Assert.ok(custom.test, "Found the custom prompt");
Assert.notEqual(custom.label, "bad", "Localized label takes priority");
Assert.ok(custom.value, "Got localized prompt");
});