commit dc3ebfbdcba61bf0e2e5eb14b592f6893f308906
parent 23646486fcef58b80fc17c4da540f58795821aa3
Author: Yubin Jamora <yjamora@mozilla.com>
Date: Wed, 8 Oct 2025 05:49:08 +0000
Bug 1985248 - fix duplicate warning message r=Mardak,firefox-ai-ml-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D267720
Diffstat:
2 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/browser/components/genai/chat.js b/browser/components/genai/chat.js
@@ -540,6 +540,9 @@ function clearWarningMessage() {
* @param {number} length context length for a request
*/
async function showSummarizeWarning(length) {
+ // if previous request showed the message clear previous message
+ clearWarningMessage();
+
const messageContainer = document.getElementById("message-container");
const warningEl = lazy.GenAI.createWarningEl(document, null, true);
diff --git a/browser/components/genai/tests/browser/browser_chat_page.js b/browser/components/genai/tests/browser/browser_chat_page.js
@@ -583,7 +583,7 @@ add_task(async function test_show_warning_when_text_is_long() {
});
await BrowserTestUtils.withNewTab(
- "data:text/plain,hi".repeat(10000),
+ "data:text/plain,hello".repeat(10000),
async () => {
await SidebarController.show("viewGenaiChatSidebar");
@@ -596,8 +596,48 @@ add_task(async function test_show_warning_when_text_is_long() {
return messageContainer.hasChildNodes();
}, "Warning message shows because text is too long");
- let events = Glean.genaiChatbot.lengthDisclaimer.testGetValue();
+ const events = Glean.genaiChatbot.lengthDisclaimer.testGetValue();
Assert.equal(events.length, 1, "Warning message is shown");
+ Assert.equal(events[0].extra.length, 209984, "Has text maxlength");
+ }
+ );
+
+ Services.fog.testResetFOG();
+
+ await BrowserTestUtils.withNewTab(
+ "data:text/plain,hi".repeat(10000),
+ async () => {
+ const { document } = SidebarController.browser.contentWindow;
+ let messageContainer = document.getElementById("message-container");
+ const summarizeButton = document.getElementById("summarize-button");
+
+ const warningMessageShown =
+ await BrowserTestUtils.waitForMutationCondition(
+ document.getElementById("message-container"),
+ {
+ childList: true,
+ subtree: false,
+ },
+ () => {
+ const container = document.getElementById("message-container");
+
+ return (
+ !container.hidden &&
+ container.querySelectorAll("moz-message-bar").length === 1
+ );
+ }
+ );
+
+ summarizeButton.click();
+ await warningMessageShown;
+
+ await TestUtils.waitForCondition(() => {
+ const event = Glean.genaiChatbot.lengthDisclaimer.testGetValue();
+ return Array.isArray(event) && event.length === 1;
+ }, "New event is recorded");
+
+ let events = Glean.genaiChatbot.lengthDisclaimer.testGetValue();
+ Assert.equal(events.length, 1, "New Warning message is shown");
Assert.equal(events[0].extra.type, "page_summarization", "Page type");
Assert.equal(events[0].extra.length, 179984, "Has selection length");
Assert.equal(events[0].extra.provider, "localhost", "With localhost");