summaryrefslogtreecommitdiff
path: root/toolkit/mozapps/extensions/internal/XPIProvider.jsm
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2022-04-14 15:35:33 +0200
committerMoonchild <moonchild@palemoon.org>2022-04-14 20:02:49 +0200
commit7b706516bcea11d041c8d17b5deb1222950036f0 (patch)
tree16b5312f040b0ac5571b05e706fe961d2fe55530 /toolkit/mozapps/extensions/internal/XPIProvider.jsm
parent144b3844da01c1c618d595ca551005708587610b (diff)
downloaduxp-7b706516bcea11d041c8d17b5deb1222950036f0.tar.gz
Issue #1821 - Revert "Issue #1744 - Remove the ability to accept Firefox
GUIDS (remove the dual system)" This reverts commit 3aa334d0b7de2a554c2234bfbb7a9f4e29dea451.
Diffstat (limited to 'toolkit/mozapps/extensions/internal/XPIProvider.jsm')
-rw-r--r--toolkit/mozapps/extensions/internal/XPIProvider.jsm36
1 files changed, 36 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
index eb4e54720a..3bcb4275eb 100644
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -134,6 +134,10 @@ const RDFURI_INSTALL_MANIFEST_ROOT = "urn:mozilla:install-manifest";
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}"
+const FIREFOX_APPCOMPATVERSION = "56.9"
+#endif
// The value for this is in Makefile.in
#expand const DB_SCHEMA = __MOZ_EXTENSIONS_DB_SCHEMA__;
@@ -6402,11 +6406,27 @@ AddonInternal.prototype = {
if (!aPlatformVersion)
aPlatformVersion = Services.appinfo.platformVersion;
+#ifdef MOZ_PHOENIX_EXTENSIONS
+ this.native = false;
+#endif
+
let version;
if (app.id == Services.appinfo.ID) {
version = aAppVersion;
+#ifdef MOZ_PHOENIX_EXTENSIONS
+ this.native = true;
+ }
+ else if (app.id == FIREFOX_ID) {
+ version = FIREFOX_APPCOMPATVERSION;
+ if (this.type != "extension")
+ //Only allow extensions in Firefox compatibility mode
+ return false;
+#endif
}
else if (app.id == TOOLKIT_ID) {
+#ifdef MOZ_PHOENIX_EXTENSIONS
+ this.native = true;
+#endif
version = aPlatformVersion;
}
@@ -6429,7 +6449,11 @@ 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)
+#else
if (app.id == Services.appinfo.ID)
+#endif
minCompatVersion = XPIProvider.minCompatibleAppVersion;
else if (app.id == TOOLKIT_ID)
minCompatVersion = XPIProvider.minCompatiblePlatformVersion;
@@ -6453,6 +6477,18 @@ AddonInternal.prototype = {
if (targetApp.id == TOOLKIT_ID)
app = targetApp;
}
+#ifdef MOZ_PHOENIX_EXTENSIONS
+ // Special case: check for Firefox TargetApps. this has to be done AFTER
+ // the initial check to make sure appinfo.ID is preferred, even if
+ // Firefox is listed before it in the install manifest.
+ // Only do this for extensions. Other types should not be allowed.
+ if (this.type == "extension") {
+ for (let targetApp of this.targetApplications) {
+ if (targetApp.id == FIREFOX_ID) //Firefox GUID
+ return targetApp;
+ }
+ }
+#endif
// Return toolkit ID if toolkit.
return app;
},