From 074aad16de4b8a5954845ee7e03f6377656d0a8a Mon Sep 17 00:00:00 2001 From: wuggy Date: Wed, 16 Sep 2026 13:50:03 -0700 Subject: [PATCH] Tri-GUID system (PM, Basilisk, Firefox) --- .../extensions/internal/AddonUpdateChecker.jsm | 14 +++++++++++++- .../mozapps/extensions/internal/XPIProvider.jsm | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm b/toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm index d0437ab114..564813764f 100644 --- a/toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm +++ b/toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm @@ -25,6 +25,7 @@ const XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/pa const TOOLKIT_ID = "toolkit@mozilla.org"; const FIREFOX_ID = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"; +const PALEMOON_ID = "{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}"; const FIREFOX_APPCOMPATVERSION = "56.9" const PREF_UPDATE_REQUIREBUILTINCERTS = "extensions.update.requireBuiltInCerts"; @@ -534,6 +535,16 @@ function parseJSONManifest(aId, aUpdateKey, aRequest, aManifestData) { maxVersion: getRequiredProperty(app, "max_version", "string"), } } + else if (PALEMOON_ID in applications) { + logger.debug("update.json: Pale Moon targetApplication"); + app = getProperty(applications, PALEMOON_ID, "object"); + + appEntry = { + id: PALEMOON_ID, + minVersion: getRequiredProperty(app, "min_version", "string"), + maxVersion: getRequiredProperty(app, "max_version", "string"), + } + } #endif else if (TOOLKIT_ID in applications) { logger.debug("update.json: Toolkit targetApplication"); @@ -834,7 +845,7 @@ function matchesVersions(aUpdate, aAppVersion, aPlatformVersion, (aIgnoreMaxVersion || (Services.vc.compare(aAppVersion, app.maxVersion) <= 0)); } #ifdef MOZ_PHOENIX_EXTENSIONS - if (app.id == FIREFOX_ID) { + if (app.id == FIREFOX_ID || app.id == PALEMOON_ID) { return (Services.vc.compare(aAppVersion, app.minVersion) >= 0) && (aIgnoreMaxVersion || (Services.vc.compare(aAppVersion, app.maxVersion) <= 0)); } @@ -898,6 +909,7 @@ this.AddonUpdateChecker = { let id = targetApp.id; #ifdef MOZ_PHOENIX_EXTENSIONS if (id == Services.appinfo.ID || id == FIREFOX_ID || + id == PALEMOON_ID || id == TOOLKIT_ID) #else if (id == Services.appinfo.ID || id == TOOLKIT_ID) diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index 08b6afa528..f4ba9f623d 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -137,6 +137,9 @@ const PREFIX_NS_EM = "http://www.mozilla.org/2004/em-rdf#"; const TOOLKIT_ID = "toolkit@mozilla.org"; #ifdef MOZ_PHOENIX_EXTENSIONS const FIREFOX_ID = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" +// Pale Moon's legacy application ID. Basilisk and Dactyloidae use the +// Firefox ID above, but extensions may still target Pale Moon explicitly. +const PALEMOON_ID = "{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}" const FIREFOX_APPCOMPATVERSION = "56.9" #endif @@ -6417,6 +6420,13 @@ AddonInternal.prototype = { return false; #endif } +#ifdef MOZ_PHOENIX_EXTENSIONS + else if (app.id == PALEMOON_ID) { + // Pale Moon extensions use the application's version range. + version = aAppVersion; + this.native = true; + } +#endif else if (app.id == TOOLKIT_ID) { // For WebExtensions against toolkit, report as Firefox 128.0 if (this.type == "extension") { @@ -6449,7 +6459,8 @@ AddonInternal.prototype = { // Extremely old extensions should not be compatible by default. let minCompatVersion; #ifdef MOZ_PHOENIX_EXTENSIONS - if (app.id == Services.appinfo.ID || app.id == FIREFOX_ID) + if (app.id == Services.appinfo.ID || app.id == FIREFOX_ID || + app.id == PALEMOON_ID) #else if (app.id == Services.appinfo.ID) #endif @@ -6483,6 +6494,8 @@ AddonInternal.prototype = { for (let targetApp of this.targetApplications) { if (targetApp.id == FIREFOX_ID) //Firefox GUID return targetApp; + if (targetApp.id == PALEMOON_ID) + app = targetApp; } #endif // Return toolkit ID if toolkit.