tor-browser

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

commit 955c0f3627c851e7a8002e8b9fe5d6a22f55ddfa
parent 98ff70e0d2284978d679bdfa35edeb6425ef725d
Author: Tom Schuster <tschuster@mozilla.com>
Date:   Tue,  6 Jan 2026 16:35:23 +0000

Bug 2006074 - Add the getMozRemoteImageURL helper. r=Gijs,tabbrowser-reviewers,dao

Differential Revision: https://phabricator.services.mozilla.com/D276634

Diffstat:
Mbrowser/components/preferences/main.js | 8++------
Mbrowser/components/tabbrowser/content/tabbrowser.js | 11+++--------
Mbrowser/modules/FaviconUtils.sys.mjs | 18++++++++++++++++++
3 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js @@ -20,6 +20,7 @@ ChromeUtils.defineESModuleGetters(this, { NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs", FormAutofillPreferences: "resource://autofill/FormAutofillPreferences.sys.mjs", + getMozRemoteImageURL: "moz-src:///browser/modules/FaviconUtils.sys.mjs", }); // Constants & Enumeration Values @@ -7003,12 +7004,7 @@ var gMainPane = { ) { // As the favicon originates from web content and is displayed in the parent process, // use the moz-remote-image: protocol to safely re-encode it. - let params = new URLSearchParams({ - url: uri.prePath + "/favicon.ico", - width: 16, - height: 16, - }); - return "moz-remote-image://?" + params; + return getMozRemoteImageURL(uri.prePath + "/favicon.ico", 16); } return ""; diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js @@ -119,7 +119,7 @@ TaskbarTabs: "resource:///modules/taskbartabs/TaskbarTabs.sys.mjs", UrlbarProviderOpenTabs: "moz-src:///browser/components/urlbar/UrlbarProviderOpenTabs.sys.mjs", - SVG_DATA_URI_PREFIX: "moz-src:///browser/modules/FaviconUtils.sys.mjs", + FaviconUtils: "moz-src:///browser/modules/FaviconUtils.sys.mjs", }); ChromeUtils.defineLazyGetter(this, "tabLocalization", () => { return new Localization( @@ -1153,16 +1153,11 @@ let url = aIconURL; if ( this._remoteSVGIconDecoding && - url.startsWith(this.SVG_DATA_URI_PREFIX) + url.startsWith(this.FaviconUtils.SVG_DATA_URI_PREFIX) ) { // 16px is hardcoded for .tab-icon-image in tabs.css let size = Math.floor(16 * window.devicePixelRatio); - let params = new URLSearchParams({ - url, - width: size, - height: size, - }); - url = "moz-remote-image://?" + params; + url = this.FaviconUtils.getMozRemoteImageURL(url, size); } aTab.setAttribute("image", url); } else { diff --git a/browser/modules/FaviconUtils.sys.mjs b/browser/modules/FaviconUtils.sys.mjs @@ -18,6 +18,18 @@ export const TRUSTED_FAVICON_SCHEMES = Object.freeze([ "resource", ]); +// Creates a moz-remote-image: URL wrapping the specified URL. +function getMozRemoteImageURL(imageUrl, size) { + let params = new URLSearchParams({ + url: imageUrl, + width: size, + height: size, + }); + return "moz-remote-image://?" + params; +} + +export { getMozRemoteImageURL }; + /** * Converts a Blob into a data: URL. * @@ -33,3 +45,9 @@ export function blobAsDataURL(blob) { reader.readAsDataURL(blob); }); } + +// Shim for tabbrowser.js that uses `defineESModuleGetters`. +export let FaviconUtils = { + SVG_DATA_URI_PREFIX, + getMozRemoteImageURL, +};