Bug 1951311 - Remove GenAI about:preferences integration r=Mardak,settings-reviewers,firefox-ai-ml-reviewers,mossop

Differential Revision: https://phabricator.services.mozilla.com/D240373
This commit is contained in:
Beth Rennie
2025-03-05 15:04:32 +00:00
parent a1b188cce4
commit e8677f7bfc
3 changed files with 0 additions and 169 deletions

View File

@@ -27,18 +27,6 @@ XPCOMUtils.defineLazyPreferenceGetter(
null,
(_pref, _old, val) => onChatEnabledChange(val)
);
XPCOMUtils.defineLazyPreferenceGetter(
lazy,
"chatHideFromLabs",
"browser.ml.chat.hideFromLabs",
false
);
XPCOMUtils.defineLazyPreferenceGetter(
lazy,
"chatHideLabsShortcuts",
"browser.ml.chat.hideLabsShortcuts",
false
);
XPCOMUtils.defineLazyPreferenceGetter(
lazy,
"chatHideLocalhost",
@@ -345,16 +333,6 @@ export const GenAI = {
).forEach(setPref);
});
// Detect about:preferences to add controls
Services.obs.addObserver(this, "experimental-pane-loaded");
// Check existing windows that might have preferences before init
lazy.EveryWindow.readyWindows.forEach(window => {
const content = window.gBrowser.selectedBrowser.contentWindow;
if (content?.location.href.startsWith("about:preferences")) {
this.buildPreferences(content);
}
});
// Record glean metrics after applying nimbus prefs
Glean.genaiChatbot.enabled.set(lazy.chatEnabled);
Glean.genaiChatbot.provider.set(this.getProviderId());
@@ -861,131 +839,6 @@ export const GenAI = {
}
browser.fixupAndLoadURIString(url, options);
},
/**
* Build preferences for chat such as handling providers.
*
* @param {Window} window for about:preferences
*/
buildPreferences({ document, Preferences }) {
// Section can be hidden by featuregate targeting
const providerEl = document.getElementById("genai-chat-provider");
if (!providerEl) {
return;
}
// Some experiments might want to hide shortcuts
const shortcutsEl = document.getElementById("genai-chat-shortcuts");
if (lazy.chatHideLabsShortcuts || lazy.chatHideFromLabs) {
shortcutsEl.remove();
}
// Page can load (restore at startup) just before default prefs apply
if (lazy.chatHideFromLabs) {
providerEl.parentNode.remove();
document.getElementById("genai-chat").remove();
return;
}
const enabled = Preferences.get("browser.ml.chat.enabled");
const onEnabledChange = () => {
providerEl.disabled = !enabled.value;
shortcutsEl.disabled = !enabled.value;
// Update enabled telemetry
Glean.genaiChatbot.enabled.set(enabled.value);
if (onEnabledChange.canChange) {
Glean.genaiChatbot.experimentCheckboxClick.record({
enabled: enabled.value,
});
}
onEnabledChange.canChange = true;
};
onEnabledChange();
enabled.on("change", onEnabledChange);
// Populate providers and hide from list if necessary
this.chatProviders.forEach((data, url) => {
providerEl.appendItem(data.name, url).hidden = data.hidden ?? false;
});
const provider = Preferences.add({
id: "browser.ml.chat.provider",
type: "string",
});
let customItem;
const onProviderChange = () => {
// Add/update the Custom entry if it's not a default provider entry
if (provider.value && !this.chatProviders.has(provider.value)) {
if (!customItem) {
customItem = providerEl.appendItem();
}
customItem.label = `Custom (${provider.value})`;
customItem.value = provider.value;
// Select the item if the preference changed not via menu
providerEl.selectedItem = customItem;
}
// Update potentially multiple links for the provider
const links = document.getElementById("genai-chat-links");
const providerData = this.chatProviders.get(provider.value);
for (let i = 1; i <= 3; i++) {
const name = `link${i}`;
let link = links.querySelector(`[data-l10n-name=${name}]`);
const href = providerData?.[name];
if (href) {
if (!link) {
link = links.appendChild(document.createElement("a"));
link.dataset.l10nName = name;
link.target = "_blank";
}
link.href = href;
} else {
link?.remove();
}
}
document.l10n.setAttributes(
links,
providerData?.linksId ?? "genai-settings-chat-links"
);
// Update provider telemetry
const providerId = this.getProviderId(provider.value);
Glean.genaiChatbot.provider.set(providerId);
if (onProviderChange.lastId && document.hasFocus()) {
Glean.genaiChatbot.providerChange.record({
current: providerId,
previous: onProviderChange.lastId,
surface: "settings",
});
}
onProviderChange.lastId = providerId;
};
onProviderChange();
provider.on("change", onProviderChange);
const shortcuts = Preferences.add({
id: "browser.ml.chat.shortcuts",
type: "bool",
});
const onShortcutsChange = () => {
// Update shortcuts telemetry
Glean.genaiChatbot.shortcuts.set(shortcuts.value);
if (onShortcutsChange.canChange) {
Glean.genaiChatbot.shortcutsCheckboxClick.record({
enabled: shortcuts.value,
});
}
onShortcutsChange.canChange = true;
};
onShortcutsChange();
shortcuts.on("change", onShortcutsChange);
},
// nsIObserver
observe(window) {
this.buildPreferences(window);
},
};
/**

View File

@@ -49,21 +49,3 @@ add_task(async function test_chat_no_open() {
Assert.ok(!SidebarController.isOpen, "Pref changes didn't open sidebar");
});
/**
* Check that about:preferences is detected
*/
add_task(async function test_preferences_observer() {
const sandbox = sinon.createSandbox();
const stub = sandbox.stub(GenAI, "buildPreferences");
await BrowserTestUtils.withNewTab("about:preferences#experimental", () => {
Assert.equal(stub.callCount, 1, "Would have built genai preferences");
GenAI.init();
Assert.equal(stub.callCount, 1, "Repeat init unnecessary so skipped");
});
sandbox.restore();
});