commit 32e687c9ab0708fe6f7a370ce2d3ecbd3452cefa parent d07761dfe92c7d6e1a549538489d3f926799d380 Author: Gijs Kruitbosch <gijskruitbosch@gmail.com> Date: Fri, 28 Nov 2025 12:21:13 +0000 Bug 1998677 - don't show favicon for http sites in split view, r=tabbrowser-reviewers,dao Differential Revision: https://phabricator.services.mozilla.com/D274365 Diffstat:
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/browser/components/tabbrowser/content/split-view-footer.js b/browser/components/tabbrowser/content/split-view-footer.js @@ -125,6 +125,9 @@ if (this.securityElement) { this.#updateSecurityElement(); } + if (this.iconElement) { + this.#updateIconElement(); + } } #updateSecurityElement() { @@ -146,12 +149,13 @@ } #updateIconElement() { - if (this.#iconSrc) { + let canShowIcon = !this.#isInsecure && this.#iconSrc; + if (canShowIcon) { this.iconElement.setAttribute("src", this.#iconSrc); } else { this.iconElement.removeAttribute("src"); } - this.iconElement.hidden = !this.#iconSrc; + this.iconElement.hidden = !canShowIcon; } /** diff --git a/browser/components/tabbrowser/test/browser/tabs/browser.toml b/browser/components/tabbrowser/test/browser/tabs/browser.toml @@ -638,6 +638,7 @@ skip-if = [ ] ["browser_tab_splitview_footer.js"] +support-files = ["file_withicon.html"] ["browser_tab_splitview_keyboard_focus.js"] diff --git a/browser/components/tabbrowser/test/browser/tabs/browser_tab_splitview_footer.js b/browser/components/tabbrowser/test/browser/tabs/browser_tab_splitview_footer.js @@ -3,6 +3,11 @@ "use strict"; +const TEST_PATH = getRootDirectory(gTestPath).replace( + "chrome://mochitests/content", + "https://example.com" +); + add_setup(async function () { await SpecialPowers.pushPrefEnv({ set: [["dom.security.https_first", false]], @@ -106,10 +111,25 @@ add_task(async function test_security_warning() { "No security warning for HTTPS." ); - info("Load an insecure website."); + info("Load a site with an icon."); let promiseLoaded = BrowserTestUtils.browserLoaded(tab2.linkedBrowser); BrowserTestUtils.startLoadingURIString( tab2.linkedBrowser, + TEST_PATH + "file_withicon.html" + ); + await promiseLoaded; + if (!BrowserTestUtils.isVisible(footer.iconElement)) { + await BrowserTestUtils.waitForEvent(footer.iconElement, "load"); + } + Assert.ok( + BrowserTestUtils.isVisible(footer.iconElement), + "Show favicon for secure sites." + ); + + info("Load an insecure website."); + promiseLoaded = BrowserTestUtils.browserLoaded(tab2.linkedBrowser); + BrowserTestUtils.startLoadingURIString( + tab2.linkedBrowser, "http://example.com/" // eslint-disable-line @microsoft/sdl/no-insecure-url ); await promiseLoaded; @@ -117,6 +137,11 @@ add_task(async function test_security_warning() { BrowserTestUtils.isVisible(footer.securityElement), "Security warning for HTTP." ); + Assert.ok( + footer.iconElement.hidden, + "Icon is deliberately hidden for insecure sites." + ); + Assert.ok(!footer.iconElement.src, "Icon has no src for insecure sites."); info("Load a local site."); promiseLoaded = BrowserTestUtils.browserLoaded(tab2.linkedBrowser); diff --git a/browser/components/tabbrowser/test/browser/tabs/file_withicon.html b/browser/components/tabbrowser/test/browser/tabs/file_withicon.html @@ -0,0 +1 @@ +<link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAHklEQVQ4T2Nk+A+EFADGUQMYRsOAYTQMgHloGKQDAJXkH/HZpKBrAAAAAElFTkSuQmCC">