Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
add_setup(async function setupPrefs() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.preferences.aiControls", true],
["browser.ai.control.default", "available"],
["browser.ai.control.speechRecognition", "default"],
],
});
});
describe("settings ai features", () => {
describe("speech recognition AI control", () => {
it("is registered and rendered, bound to its pref", async () => {
await withPrefsPane("ai", async doc => {
const win = doc.documentGlobal;
// The backing Preference must be registered (Preferences.addAll); a
// missing registration throws PreferenceNotAddedError when the control
// renders.
const pref = win.Preferences.get(
"browser.ai.control.speechRecognition"
);
Assert.ok(
pref,
"browser.ai.control.speechRecognition Preference is registered"
);
const setting = win.Preferences.getSetting(
"aiControlSpeechRecognitionSelect"
);
Assert.ok(setting, "speech recognition AI control setting exists");
const control = doc.getElementById("aiControlSpeechRecognitionSelect");
Assert.ok(control, "speech recognition AI control element exists");
Assert.ok(
BrowserTestUtils.isVisible(control),
"speech recognition AI control is visible"
);
// The control reflects the backing pref.
await SpecialPowers.pushPrefEnv({
set: [["browser.ai.control.speechRecognition", "blocked"]],
});
Assert.equal(
pref.value,
"blocked",
"the setting's Preference tracks browser.ai.control.speechRecognition"
);
});
});
it("inherits the global AI controls state while set to default", async () => {
await withPrefsPane("ai", async doc => {
const win = doc.documentGlobal;
const setting = win.Preferences.getSetting(
"aiControlSpeechRecognitionSelect"
);
for (let [globalState, expected] of [
["blocked", "blocked"],
["available", "available"],
]) {
await SpecialPowers.pushPrefEnv({
set: [
["browser.ai.control.speechRecognition", "default"],
["browser.ai.control.default", globalState],
],
});
Assert.equal(
setting.value,
expected,
`speech recognition is ${expected} when AI enhancements are ${globalState}`
);
await SpecialPowers.popPrefEnv();
}
});
});
});
});