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:
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,
+};