commit cae4ed8cbf8ce6dc29928ad18bfaa3bb28d1679a
parent 97d317e8f6fe5b38341acc6274135396e20feb8c
Author: Mark Striemer <mstriemer@mozilla.com>
Date: Fri, 19 Dec 2025 04:14:17 +0000
Bug 2005797 - Part 2: Sidebar chatbot provider selection in prefs r=yjamora,fluent-reviewers,desktop-theme-reviewers,akulyk,bolsson,hjones
Differential Revision: https://phabricator.services.mozilla.com/D276733
Diffstat:
13 files changed, 248 insertions(+), 4 deletions(-)
diff --git a/browser/components/preferences/config/aiFeatures.mjs b/browser/components/preferences/config/aiFeatures.mjs
@@ -0,0 +1,77 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import { Preferences } from "chrome://global/content/preferences/Preferences.mjs";
+import { SettingGroupManager } from "chrome://browser/content/preferences/config/SettingGroupManager.mjs";
+
+const XPCOMUtils = ChromeUtils.importESModule(
+ "resource://gre/modules/XPCOMUtils.sys.mjs"
+).XPCOMUtils;
+const lazy = XPCOMUtils.declareLazy({
+ GenAI: "resource:///modules/GenAI.sys.mjs",
+});
+
+Preferences.addAll([{ id: "browser.ml.chat.provider", type: "string" }]);
+
+Preferences.addSetting({ id: "chatbotProviderItem" });
+Preferences.addSetting({
+ id: "chatbotProvider",
+ pref: "browser.ml.chat.provider",
+ setup() {
+ lazy.GenAI.init();
+ },
+ getControlConfig(config, _, setting) {
+ let providerUrl = setting.value;
+ let isKnownProvider = providerUrl == "";
+ let options = [config.options[0]];
+ lazy.GenAI.chatProviders.forEach((provider, url) => {
+ let isSelected = url == providerUrl;
+ // @ts-expect-error provider.hidden isn't in the typing
+ if (!isSelected && provider.hidden) {
+ return;
+ }
+ isKnownProvider = isKnownProvider || isSelected;
+ options.push({
+ value: url,
+ controlAttrs: { label: provider.name },
+ });
+ });
+ if (!isKnownProvider) {
+ options.push({
+ value: providerUrl,
+ controlAttrs: { label: providerUrl },
+ });
+ }
+ return {
+ ...config,
+ options,
+ };
+ },
+});
+
+SettingGroupManager.registerGroups({
+ aiFeatures: {
+ l10nId: "try-ai-features-group",
+ items: [
+ {
+ id: "chatbotProviderItem",
+ control: "moz-box-item",
+ items: [
+ {
+ id: "chatbotProvider",
+ l10nId: "try-ai-features-chatbot-provider",
+ control: "moz-select",
+ supportPage: "ai-chatbot",
+ options: [
+ {
+ l10nId: "try-ai-features-chatbot-choose-label",
+ value: "",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+});
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
@@ -25,6 +25,7 @@ browser.jar:
content/browser/preferences/web-appearance-light.svg
content/browser/preferences/etp-toggle-promo.svg
content/browser/preferences/etp-advanced-banner.svg
+ content/browser/preferences/config/aiFeatures.mjs (config/aiFeatures.mjs)
content/browser/preferences/config/SettingGroupManager.mjs (config/SettingGroupManager.mjs)
content/browser/preferences/widgets/dialog-button.mjs (widgets/dialog-button/dialog-button.mjs)
content/browser/preferences/widgets/placeholder-message.mjs (widgets/placeholder-message/placeholder-message.mjs)
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
@@ -281,6 +281,11 @@ const CONFIG_PANES = Object.freeze({
],
iconSrc: "chrome://browser/skin/translations.svg",
},
+ aiFeatures: {
+ l10nId: "preferences-ai-features-header",
+ groupIds: ["aiFeatures"],
+ module: "chrome://browser/content/preferences/config/aiFeatures.mjs",
+ },
});
var gLastCategory = { category: undefined, subcategory: undefined };
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
@@ -55,6 +55,7 @@
<link rel="localization" href="preview/smartTabGroups.ftl"/>
<link rel="localization" href="preview/privacyPreferences.ftl"/>
<link rel="localization" href="preview/ipProtection.ftl"/>
+ <link rel="localization" href="preview/aiFeatures.ftl"/>
<!-- Links below are only used for search-l10n-ids into subdialogs -->
<link rel="localization" href="browser/aboutDialog.ftl"/>
@@ -163,6 +164,16 @@
<label class="category-name" flex="1" data-l10n-id="pane-sync-title3"></label>
</richlistitem>
+ <richlistitem id="category-ai-features"
+ class="category"
+ value="paneAiFeatures"
+ data-l10n-id="category-ai-features"
+ data-l10n-attrs="tooltiptext"
+ align="center">
+ <image class="category-icon"/>
+ <label class="category-name" flex="1" data-l10n-id="pane-ai-features-title"></label>
+ </richlistitem>
+
<richlistitem id="category-experimental"
class="category"
hidden="true"
diff --git a/browser/components/preferences/tests/browser.toml b/browser/components/preferences/tests/browser.toml
@@ -23,6 +23,8 @@ run-if = [
"updater",
]
+["browser_aiFeatures.js"]
+
["browser_application_xml_handle_internally.js"]
["browser_applications_selection.js"]
diff --git a/browser/components/preferences/tests/browser_aiFeatures.js b/browser/components/preferences/tests/browser_aiFeatures.js
@@ -0,0 +1,71 @@
+/* Any copyright is dedicated to the Public Domain.
+ https://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+describe("settings ai features", () => {
+ let doc, win;
+
+ beforeEach(async function setup() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.ml.chat.provider", ""],
+ ["browser.settings-redesign.aiFeatures.enabled", true],
+ ],
+ });
+ await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
+ doc = gBrowser.selectedBrowser.contentDocument;
+ win = doc.ownerGlobal;
+ });
+
+ afterEach(() => {
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ gBrowser.ownerGlobal.SidebarController.hide();
+ });
+
+ it("can change the chatbot provider value", async () => {
+ const categoryButton = doc.getElementById("category-ai-features");
+ Assert.ok(categoryButton, "category exists");
+ Assert.ok(
+ BrowserTestUtils.isVisible(categoryButton),
+ "category is visible"
+ );
+
+ const paneLoaded = waitForPaneChange("aiFeatures");
+ categoryButton.scrollIntoView();
+ EventUtils.synthesizeMouseAtCenter(categoryButton, {}, win);
+ await paneLoaded;
+
+ const providerControl = doc.getElementById("chatbotProvider");
+ Assert.ok(providerControl, "control exists");
+ Assert.ok(
+ BrowserTestUtils.isVisible(providerControl),
+ "control is visible"
+ );
+ Assert.equal(
+ Services.prefs.getStringPref("browser.ml.chat.provider"),
+ "",
+ "Pref is empty"
+ );
+
+ Assert.equal(providerControl.value, "", "No provider set");
+
+ const settingChanged = waitForSettingChange(providerControl.setting);
+ providerControl.focus();
+ const pickerOpened = BrowserTestUtils.waitForSelectPopupShown(
+ win.docShell.chromeEventHandler.ownerGlobal
+ );
+ EventUtils.sendKey("space");
+ await pickerOpened;
+ EventUtils.sendKey("down");
+ EventUtils.sendKey("return");
+ await settingChanged;
+
+ Assert.notEqual(providerControl.value, "", "Provider changed");
+ Assert.notEqual(
+ Services.prefs.getStringPref("browser.ml.chat.provider"),
+ "",
+ "Pref is not empty"
+ );
+ });
+});
diff --git a/browser/components/preferences/widgets/setting-pane/setting-pane.mjs b/browser/components/preferences/widgets/setting-pane/setting-pane.mjs
@@ -11,6 +11,7 @@ import { MozLitElement } from "chrome://global/content/lit-utils.mjs";
* @property {string} l10nId Fluent id for the heading/description.
* @property {string[]} groupIds What setting groups should be rendered.
* @property {string} [iconSrc] Optional icon shown in the page header.
+ * @property {string} [module] Import path for module housing the config.
*/
export class SettingPane extends MozLitElement {
@@ -82,14 +83,17 @@ export class SettingPane extends MozLitElement {
if (this.isSubPane) {
this.setAttribute("data-hidden-from-search", "true");
this.setAttribute("data-subpanel", "true");
+ this._createCategoryButton();
}
- this._createCategoryButton();
}
init() {
if (!this.hasUpdated) {
this.performUpdate();
}
+ if (this.config.module) {
+ ChromeUtils.importESModule(this.config.module, { global: "current" });
+ }
for (let groupId of this.config.groupIds) {
window.initSettingGroup(groupId);
}
diff --git a/browser/locales-preview/aiFeatures.ftl b/browser/locales-preview/aiFeatures.ftl
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+pane-ai-features-title = AI Features
+category-ai-features =
+ .tooltiptext = { pane-ai-features-title }
+
+## AI Features section
+
+preferences-ai-features-header =
+ .heading = AI features
+try-ai-features-group =
+ .label = Try AI features
+ .description = All features are optional. Don’t want to see any of them? You can remove AI below.
+try-ai-features-chatbot-provider =
+ .label = Access chatbot providers in sidebar
+ .description = Keep a chatbot in view as you browse. Switch anytime.
+# This labels the unset option for AI Chatbot selection, the other options are brand names like "ChatGPT" and "Anthropic Claude"
+try-ai-features-chatbot-choose-label =
+ .label = Choose provider
diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn
@@ -15,6 +15,7 @@
preview/genai.ftl (../components/genai/content/genai.ftl)
preview/credentialChooser.ftl (../../toolkit/components/credentialmanagement/credentialChooser.ftl)
browser (%browser/**/*.ftl)
+ preview/aiFeatures.ftl (../locales-preview/aiFeatures.ftl)
preview/aiWindow.ftl (../locales-preview/aiWindow.ftl)
preview/smartTabGroups.ftl (../locales-preview/smartTabGroups.ftl)
preview/ipProtection.ftl (../locales-preview/ipProtection.ftl)
diff --git a/browser/modules/BrowserUsageTelemetry.sys.mjs b/browser/modules/BrowserUsageTelemetry.sys.mjs
@@ -149,6 +149,7 @@ const PREFERENCES_PANES = [
"paneContainers",
"paneExperimental",
"paneMoreFromMozilla",
+ "paneAiFeatures",
];
const IGNORABLE_EVENTS = new WeakMap();
diff --git a/browser/themes/shared/preferences/preferences.css b/browser/themes/shared/preferences/preferences.css
@@ -235,6 +235,10 @@ radio {
list-style-image: url("chrome://browser/skin/preferences/category-sync.svg");
}
+#category-ai-features > .category-icon {
+ list-style-image: url("chrome://global/skin/icons/highlights.svg");
+}
+
#category-experimental > .category-icon {
list-style-image: url("chrome://global/skin/icons/experiments.svg");
}
@@ -1419,6 +1423,10 @@ setting-group[groupid="home"] {
}
/** SRD rows control for New Tab END **/
+setting-group[groupid="aiFeatures"] {
+ --select-max-width: fit-content;
+}
+
#translations-manage-install-list {
height: 220px;
overflow: auto;
diff --git a/tools/@types/generated/lib.gecko.modules.d.ts b/tools/@types/generated/lib.gecko.modules.d.ts
@@ -13,6 +13,7 @@ export interface Modules {
"chrome://browser/content/ipprotection/ipprotection-constants.mjs": typeof import("chrome://browser/content/ipprotection/ipprotection-constants.mjs"),
"chrome://browser/content/migration/migration-wizard-constants.mjs": typeof import("chrome://browser/content/migration/migration-wizard-constants.mjs"),
"chrome://browser/content/nsContextMenu.sys.mjs": typeof import("chrome://browser/content/nsContextMenu.sys.mjs"),
+ "chrome://browser/content/preferences/config/SettingGroupManager.mjs": typeof import("chrome://browser/content/preferences/config/SettingGroupManager.mjs"),
"chrome://browser/content/screenshots/fileHelpers.mjs": typeof import("chrome://browser/content/screenshots/fileHelpers.mjs"),
"chrome://browser/content/sidebar/sidebar-main.mjs": typeof import("chrome://browser/content/sidebar/sidebar-main.mjs"),
"chrome://browser/content/sidebar/sidebar-panel-header.mjs": typeof import("chrome://browser/content/sidebar/sidebar-panel-header.mjs"),
@@ -197,10 +198,25 @@ export interface Modules {
"moz-src:///browser/components/DesktopActorRegistry.sys.mjs": typeof import("moz-src:///browser/components/DesktopActorRegistry.sys.mjs"),
"moz-src:///browser/components/ProfileDataUpgrader.sys.mjs": typeof import("moz-src:///browser/components/ProfileDataUpgrader.sys.mjs"),
"moz-src:///browser/components/StartupTelemetry.sys.mjs": typeof import("moz-src:///browser/components/StartupTelemetry.sys.mjs"),
- "moz-src:///browser/components/aiwindow/models/ChatUtils.mjs": typeof import("moz-src:///browser/components/aiwindow/models/ChatUtils.mjs"),
+ "moz-src:///browser/components/aiwindow/models/Chat.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Chat.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/ChatUtils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/ChatUtils.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/Insights.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Insights.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/InsightsChatSource.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/InsightsChatSource.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/InsightsConstants.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/InsightsConstants.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/InsightsDriftDetector.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/InsightsDriftDetector.sys.mjs"),
"moz-src:///browser/components/aiwindow/models/InsightsHistorySource.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/InsightsHistorySource.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/InsightsManager.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/InsightsManager.sys.mjs"),
"moz-src:///browser/components/aiwindow/models/IntentClassifier.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/IntentClassifier.sys.mjs"),
- "moz-src:///browser/components/aiwindow/models/Utils.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Utils.mjs"),
+ "moz-src:///browser/components/aiwindow/models/SearchBrowsingHistory.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/SearchBrowsingHistory.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/TitleGeneration.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/TitleGeneration.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/Tools.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Tools.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/Utils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Utils.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/models/prompts/InsightsPrompts.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/prompts/InsightsPrompts.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/services/InsightStore.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/services/InsightStore.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/ui/modules/AIWindow.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindow.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/ui/modules/ChatMessage.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatMessage.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/ui/modules/ChatStore.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatStore.sys.mjs"),
+ "moz-src:///browser/components/aiwindow/ui/modules/ChatUtils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatUtils.sys.mjs"),
"moz-src:///browser/components/attribution/AttributionCode.sys.mjs": typeof import("moz-src:///browser/components/attribution/AttributionCode.sys.mjs"),
"moz-src:///browser/components/attribution/MacAttribution.sys.mjs": typeof import("moz-src:///browser/components/attribution/MacAttribution.sys.mjs"),
"moz-src:///browser/components/contentanalysis/content/ContentAnalysis.sys.mjs": typeof import("moz-src:///browser/components/contentanalysis/content/ContentAnalysis.sys.mjs"),
@@ -297,6 +313,7 @@ export interface Modules {
"moz-src:///browser/components/urlbar/private/SuggestBackendRust.sys.mjs": typeof import("moz-src:///browser/components/urlbar/private/SuggestBackendRust.sys.mjs"),
"moz-src:///browser/modules/CanvasPermissionPromptHelper.sys.mjs": typeof import("moz-src:///browser/modules/CanvasPermissionPromptHelper.sys.mjs"),
"moz-src:///browser/modules/ContextId.sys.mjs": typeof import("moz-src:///browser/modules/ContextId.sys.mjs"),
+ "moz-src:///browser/modules/FaviconUtils.sys.mjs": typeof import("moz-src:///browser/modules/FaviconUtils.sys.mjs"),
"moz-src:///browser/modules/PrivateBrowsingUI.sys.mjs": typeof import("moz-src:///browser/modules/PrivateBrowsingUI.sys.mjs"),
"moz-src:///browser/modules/UnexpectedScriptObserver.sys.mjs": typeof import("moz-src:///browser/modules/UnexpectedScriptObserver.sys.mjs"),
"moz-src:///browser/modules/WebAuthnPromptHelper.sys.mjs": typeof import("moz-src:///browser/modules/WebAuthnPromptHelper.sys.mjs"),
@@ -400,7 +417,7 @@ export interface Modules {
"resource:///modules/MigrationUtils.sys.mjs": typeof import("resource:///modules/MigrationUtils.sys.mjs"),
"resource:///modules/MigratorBase.sys.mjs": typeof import("resource:///modules/MigratorBase.sys.mjs"),
"resource:///modules/OpenTabs.sys.mjs": typeof import("resource:///modules/OpenTabs.sys.mjs"),
- "resource:///modules/OpenTabsController.sys.mjs": typeof import("resource:///modules/OpenTabs.sys.mjs"),
+ "resource:///modules/OpenTabsController.sys.mjs": typeof import("resource:///modules/OpenTabsController.sys.mjs"),
"resource:///modules/PageActions.sys.mjs": typeof import("resource:///modules/PageActions.sys.mjs"),
"resource:///modules/PartnerLinkAttribution.sys.mjs": typeof import("resource:///modules/PartnerLinkAttribution.sys.mjs"),
"resource:///modules/PermissionUI.sys.mjs": typeof import("resource:///modules/PermissionUI.sys.mjs"),
@@ -427,6 +444,7 @@ export interface Modules {
"resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs": typeof import("resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs"),
"resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs": typeof import("resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs"),
"resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs": typeof import("resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs"),
+ "resource:///modules/aiwindow/ui/modules/ChatStore.sys.mjs": typeof import("resource:///modules/aiwindow/ui/modules/ChatStore.sys.mjs"),
"resource:///modules/asrouter/ASRouter.sys.mjs": typeof import("resource:///modules/asrouter/ASRouter.sys.mjs"),
"resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs"),
"resource:///modules/asrouter/ASRouterNewTabHook.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterNewTabHook.sys.mjs"),
@@ -476,6 +494,7 @@ export interface Modules {
"resource:///modules/ipprotection/IPPExceptionsManager.sys.mjs": typeof import("resource:///modules/ipprotection/IPPExceptionsManager.sys.mjs"),
"resource:///modules/ipprotection/IPPNetworkErrorObserver.sys.mjs": typeof import("resource:///modules/ipprotection/IPPNetworkErrorObserver.sys.mjs"),
"resource:///modules/ipprotection/IPPNimbusHelper.sys.mjs": typeof import("resource:///modules/ipprotection/IPPNimbusHelper.sys.mjs"),
+ "resource:///modules/ipprotection/IPPOnboardingMessageHelper.sys.mjs": typeof import("resource:///modules/ipprotection/IPPOnboardingMessageHelper.sys.mjs"),
"resource:///modules/ipprotection/IPPOptOutHelper.sys.mjs": typeof import("resource:///modules/ipprotection/IPPOptOutHelper.sys.mjs"),
"resource:///modules/ipprotection/IPPProxyManager.sys.mjs": typeof import("resource:///modules/ipprotection/IPPProxyManager.sys.mjs"),
"resource:///modules/ipprotection/IPPSignInWatcher.sys.mjs": typeof import("resource:///modules/ipprotection/IPPSignInWatcher.sys.mjs"),
@@ -590,6 +609,7 @@ export interface Modules {
"resource://devtools/shared/loader/Loader.sys.mjs": typeof import("resource://devtools/shared/loader/Loader.sys.mjs"),
"resource://devtools/shared/loader/browser-loader.sys.mjs": typeof import("resource://devtools/shared/loader/browser-loader.sys.mjs"),
"resource://devtools/shared/loader/worker-loader.sys.mjs": typeof import("resource://devtools/shared/loader/worker-loader.sys.mjs"),
+ "resource://devtools/shared/mdn.mjs": typeof import("resource://devtools/shared/mdn.mjs"),
"resource://devtools/shared/network-observer/ChannelMap.sys.mjs": typeof import("resource://devtools/shared/network-observer/ChannelMap.sys.mjs"),
"resource://devtools/shared/network-observer/NetworkAuthListener.sys.mjs": typeof import("resource://devtools/shared/network-observer/NetworkAuthListener.sys.mjs"),
"resource://devtools/shared/network-observer/NetworkHelper.sys.mjs": typeof import("resource://devtools/shared/network-observer/NetworkHelper.sys.mjs"),
@@ -613,6 +633,7 @@ export interface Modules {
"resource://gre/actors/AutoCompleteParent.sys.mjs": typeof import("resource://gre/actors/AutoCompleteParent.sys.mjs"),
"resource://gre/actors/FormHandlerChild.sys.mjs": typeof import("resource://gre/actors/FormHandlerChild.sys.mjs"),
"resource://gre/actors/MLEngineParent.sys.mjs": typeof import("resource://gre/actors/MLEngineParent.sys.mjs"),
+ "resource://gre/actors/PageExtractorParent.sys.mjs": typeof import("resource://gre/actors/PageExtractorParent.sys.mjs"),
"resource://gre/actors/PictureInPictureChild.sys.mjs": typeof import("resource://gre/actors/PictureInPictureChild.sys.mjs"),
"resource://gre/actors/PopupAndRedirectBlockingParent.sys.mjs": typeof import("resource://gre/actors/PopupAndRedirectBlockingParent.sys.mjs"),
"resource://gre/actors/SelectChild.sys.mjs": typeof import("resource://gre/actors/SelectChild.sys.mjs"),
diff --git a/tools/@types/generated/tspaths.json b/tools/@types/generated/tspaths.json
@@ -17,6 +17,9 @@
"chrome://browser/content/aboutlogins/components/login-message-popup.mjs": [
"browser/components/aboutlogins/content/components/login-message-popup.mjs"
],
+ "chrome://browser/content/aiwindow/components/input-cta.mjs": [
+ "browser/components/aiwindow/ui/components/input-cta/input-cta.mjs"
+ ],
"chrome://browser/content/asrouter/components/menu-message.mjs": [
"browser/components/asrouter/content/components/menu-message/menu-message.mjs"
],
@@ -104,6 +107,9 @@
"chrome://browser/content/nsContextMenu.sys.mjs": [
"browser/base/content/nsContextMenu.sys.mjs"
],
+ "chrome://browser/content/preferences/config/SettingGroupManager.mjs": [
+ "browser/components/preferences/config/SettingGroupManager.mjs"
+ ],
"chrome://browser/content/preferences/widgets/dialog-button.mjs": [
"browser/components/preferences/widgets/dialog-button/dialog-button.mjs"
],
@@ -128,6 +134,9 @@
"chrome://browser/content/preferences/widgets/sync-device-name.mjs": [
"browser/components/preferences/widgets/sync-device-name/sync-device-name.mjs"
],
+ "chrome://browser/content/preferences/widgets/sync-engines-list.mjs": [
+ "browser/components/preferences/widgets/sync-engine-list/sync-engines-list.mjs"
+ ],
"chrome://browser/content/profiles/avatar.mjs": [
"browser/components/profiles/content/avatar.mjs"
],
@@ -1139,6 +1148,9 @@
"resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs": [
"browser/components/aboutwelcome/modules/AboutWelcomeTelemetry.sys.mjs"
],
+ "resource:///modules/aiwindow/ui/modules/ChatStore.sys.mjs": [
+ "browser/components/aiwindow/ui/modules/ChatStore.sys.mjs"
+ ],
"resource:///modules/asrouter/ASRouter.sys.mjs": [
"browser/components/asrouter/modules/ASRouter.sys.mjs"
],
@@ -1298,6 +1310,9 @@
"resource:///modules/ipprotection/IPPNimbusHelper.sys.mjs": [
"browser/components/ipprotection/IPPNimbusHelper.sys.mjs"
],
+ "resource:///modules/ipprotection/IPPOnboardingMessageHelper.sys.mjs": [
+ "browser/components/ipprotection/IPPOnboardingMessageHelper.sys.mjs"
+ ],
"resource:///modules/ipprotection/IPPOptOutHelper.sys.mjs": [
"browser/components/ipprotection/IPPOptOutHelper.sys.mjs"
],
@@ -4850,6 +4865,9 @@
"resource://devtools/shared/loader/worker-loader.sys.mjs": [
"devtools/shared/loader/worker-loader.sys.mjs"
],
+ "resource://devtools/shared/mdn.mjs": [
+ "devtools/shared/mdn.mjs"
+ ],
"resource://devtools/shared/natural-sort.js": [
"devtools/shared/natural-sort.js"
],
@@ -5216,6 +5234,9 @@
"resource://gre/actors/NetErrorParent.sys.mjs": [
"toolkit/actors/NetErrorParent.sys.mjs"
],
+ "resource://gre/actors/PageExtractorParent.sys.mjs": [
+ "toolkit/components/pageextractor/PageExtractorParent.sys.mjs"
+ ],
"resource://gre/actors/PictureInPictureChild.sys.mjs": [
"toolkit/actors/PictureInPictureChild.sys.mjs"
],