From 223d5d6a2543ed149926a36a21d70cab2b9b7f40 Mon Sep 17 00:00:00 2001 From: ownedbywuigi Date: Tue, 31 Mar 2026 20:30:49 +0100 Subject: [PATCH] Spoof to Firefox 128 for WebExtensions --- toolkit/components/webextensions/ext-runtime.js | 4 +++- .../mozapps/extensions/internal/XPIProvider.jsm | 11 ++++++++++- .../webextensions/internal/XPIProvider.jsm | 16 ++++++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/toolkit/components/webextensions/ext-runtime.js b/toolkit/components/webextensions/ext-runtime.js index aed3ffd4b0..9324e0ee43 100644 --- a/toolkit/components/webextensions/ext-runtime.js +++ b/toolkit/components/webextensions/ext-runtime.js @@ -94,7 +94,9 @@ extensions.registerSchemaAPI("runtime", "addon_parent", context => { getBrowserInfo: function() { const {name, vendor, version, appBuildID} = Services.appinfo; - const info = {name, vendor, version, buildID: appBuildID}; + // Override version for WebExtensions compatibility with modern extensions + // Report as Firefox 128.0 to extensions while maintaining actual UXP identity + const info = {name: "Firefox", vendor, version: "128.0", buildID: appBuildID}; return Promise.resolve(info); }, diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index fbb1b3e8b6..c2ca8ab8a9 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -6380,6 +6380,10 @@ AddonInternal.prototype = { let version; if (app.id == Services.appinfo.ID) { version = aAppVersion; + // For WebExtensions, report as Firefox 128.0 for compatibility + if (this.type == "extension") { + version = "128.0"; + } #ifdef MOZ_PHOENIX_EXTENSIONS this.native = true; } @@ -6391,10 +6395,15 @@ AddonInternal.prototype = { #endif } else if (app.id == TOOLKIT_ID) { + // For WebExtensions against toolkit, report as Firefox 128.0 + if (this.type == "extension") { + version = "128.0"; + } else { + version = aPlatformVersion; + } #ifdef MOZ_PHOENIX_EXTENSIONS this.native = true; #endif - version = aPlatformVersion; } // Only extensions and dictionaries can be compatible by default; themes diff --git a/toolkit/mozapps/webextensions/internal/XPIProvider.jsm b/toolkit/mozapps/webextensions/internal/XPIProvider.jsm index 4dcb5267d9..24ea811ada 100644 --- a/toolkit/mozapps/webextensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/webextensions/internal/XPIProvider.jsm @@ -7001,12 +7001,20 @@ AddonInternal.prototype = { aPlatformVersion = Services.appinfo.platformVersion; let version; - if (app.id == Services.appinfo.ID) - version = aAppVersion; + if (app.id == Services.appinfo.ID) { + // For WebExtensions, report as Firefox 128.0 for compatibility + if (this.type == "extension") { + version = "128.0"; + } else { + version = aAppVersion; + } + } else if (app.id == TOOLKIT_ID) version = aPlatformVersion - else if (app.id == WEBEXTENSIONS_ID) - version = WEBEXTENSIONS_VERSION + else if (app.id == WEBEXTENSIONS_ID) { + // For WebExtensions, report as Firefox 128.0 + version = "128.0"; + } // Only extensions and dictionaries can be compatible by default; themes // and language packs always use strict compatibility checking.