tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mbrowser/components/genai/chat.js | 3+++
Mbrowser/components/genai/tests/browser/browser_chat_page.js | 44++++++++++++++++++++++++++++++++++++++++++--
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");