1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-02 01:20:54 +00:00

Switch OpenH264 plugin to use environment variable

files/patch-system-openh264 causes patch churn on updates and hits
assertion with DEBUG=on[1]. Rework to use MOZ_GMP_PATH instead.

While here populate Last Updated field to avoid falling back to Epoch start
and disable Automatic Updates in an unlikely case of
- Cisco & Mozilla providing prebuilt version for FreeBSD
- Firefox running with root priveleges i.e., write permission under /usr/local

PR:		202218 [1]
Reported by:	kib, pi [1]
Inspired by:	Gentoo
MFH:		2015Q3
This commit is contained in:
Jan Beich 2015-08-11 13:22:54 +00:00
parent 580147a469
commit ca8a3f7f59
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=393941
17 changed files with 34 additions and 1184 deletions

View File

@ -3,6 +3,7 @@
PORTNAME= thunderbird
DISTVERSION= 38.1.0
PORTREVISION= 1
CATEGORIES= mail news net-im ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source

View File

@ -1,10 +1,12 @@
--- mail/app/nsMailApp.cpp~
+++ mail/app/nsMailApp.cpp
@@ -320,6 +320,7 @@ int main(int argc, char* argv[])
@@ -320,6 +320,9 @@ int main(int argc, char* argv[])
TriggerQuirks();
#endif
+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+
int gotCounters;
#if defined(XP_UNIX)
struct rusage initialRUsage;

View File

@ -1,239 +0,0 @@
# Revert bug 1045209 to allow using absolute path
diff --git dom/media/gmp/GMPChild.cpp dom/media/gmp/GMPChild.cpp
index 1dde3ac..12c88cf 100644
--- mozilla/dom/media/gmp/GMPChild.cpp
+++ mozilla/dom/media/gmp/GMPChild.cpp
@@ -76,21 +76,14 @@ GetFileBase(const std::string& aPluginPa
}
#endif
- nsCOMPtr<nsIFile> parent;
- rv = aFileBase->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return false;
- }
-
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
- if (NS_FAILED(rv)) {
+ nsAutoString leafName;
+ if (NS_FAILED(aFileBase->GetLeafName(leafName))) {
return false;
}
- aBaseName = Substring(parentLeafName,
+ aBaseName = Substring(leafName,
4,
- parentLeafName.Length() - 1);
+ leafName.Length() - 1);
return true;
}
diff --git dom/media/gmp/GMPParent.cpp dom/media/gmp/GMPParent.cpp
index aa60acf..90878ca 100644
--- mozilla/dom/media/gmp/GMPParent.cpp
+++ mozilla/dom/media/gmp/GMPParent.cpp
@@ -90,23 +90,16 @@
mService = aService;
mDirectory = aPluginDir;
- // aPluginDir is <profile-dir>/<gmp-plugin-id>/<version>
- // where <gmp-plugin-id> should be gmp-gmpopenh264
- nsCOMPtr<nsIFile> parent;
- nsresult rv = aPluginDir->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return rv;
- }
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
+ nsAutoString leafname;
+ nsresult rv = aPluginDir->GetLeafName(leafname);
if (NS_FAILED(rv)) {
return rv;
}
LOGD(("%s::%s: %p for %s", __CLASS__, __FUNCTION__, this,
- NS_LossyConvertUTF16toASCII(parentLeafName).get()));
+ NS_LossyConvertUTF16toASCII(leafname).get()));
- MOZ_ASSERT(parentLeafName.Length() > 4);
- mName = Substring(parentLeafName, 4);
+ MOZ_ASSERT(leafname.Length() > 4);
+ mName = Substring(leafname, 4);
return ReadGMPMetaData();
}
diff --git toolkit/modules/GMPInstallManager.jsm toolkit/modules/GMPInstallManager.jsm
index 9593492..470384b 100644
--- mozilla/toolkit/modules/GMPInstallManager.jsm
+++ mozilla/toolkit/modules/GMPInstallManager.jsm
@@ -888,9 +889,7 @@
let gmpAddon = this._gmpAddon;
let installToDirPath = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsIFile);
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- gmpAddon.id,
- gmpAddon.version);
+ let path = OS.Path.join(OS.Constants.Path.profileDir, gmpAddon.id);
installToDirPath.initWithPath(path);
log.info("install to directory path: " + installToDirPath.path);
let gmpInstaller = new GMPExtractor(zipPath, installToDirPath.path);
@@ -885,10 +883,12 @@
// Success, set the prefs
let now = Math.round(Date.now() / 1000);
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_LAST_UPDATE, now, gmpAddon.id);
- // Setting the version pref signals installation completion to consumers,
- // if you need to set other prefs etc. do it before this.
+ // Setting the path pref signals installation completion to consumers,
+ // so set the version and potential other information they use first.
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_VERSION, gmpAddon.version,
gmpAddon.id);
+ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_PATH,
+ installToDirPath.path, gmpAddon.id);
this._deferred.resolve(extractedPaths);
}, err => {
this._deferred.reject(err);
diff --git toolkit/modules/GMPUtils.jsm toolkit/modules/GMPUtils.jsm
index 1f3a0b1..93517be 100644
--- mozilla/toolkit/modules/GMPUtils.jsm
+++ mozilla/toolkit/modules/GMPUtils.jsm
@@ -70,6 +70,7 @@ this.GMPPrefs = {
KEY_EME_ENABLED: "media.eme.enabled",
KEY_PLUGIN_ENABLED: "media.{0}.enabled",
KEY_PLUGIN_LAST_UPDATE: "media.{0}.lastUpdate",
+ KEY_PLUGIN_PATH: "media.{0}.path",
KEY_PLUGIN_VERSION: "media.{0}.version",
KEY_PLUGIN_AUTOUPDATE: "media.{0}.autoupdate",
KEY_PLUGIN_FORCEVISIBLE: "media.{0}.forcevisible",
diff --git toolkit/mozapps/extensions/internal/GMPProvider.jsm toolkit/mozapps/extensions/internal/GMPProvider.jsm
index 1f3a0b1..93517be 100644
--- mozilla/toolkit/mozapps/extensions/internal/GMPProvider.jsm
+++ mozilla/toolkit/mozapps/extensions/internal/GMPProvider.jsm
@@ -100,12 +100,11 @@
Log.repository.getLoggerWithMessagePrefix("Toolkit.GMP",
"GMPWrapper(" +
this._plugin.id + ") ");
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
- this._plugin.id),
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED, this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.observe(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);
@@ -120,17 +119,14 @@
optionsType: AddonManager.OPTIONS_TYPE_INLINE,
get optionsURL() { return this._plugin.optionsURL; },
+
set gmpPath(aPath) { this._gmpPath = aPath; },
get gmpPath() {
- if (!this._gmpPath && this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
+ if (!this._gmpPath) {
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
}
return this._gmpPath;
},
-
get id() { return this._plugin.id; },
get type() { return "plugin"; },
get isGMPlugin() { return true; },
@@ -141,8 +137,13 @@
get description() { return this._plugin.description; },
get fullDescription() { return this._plugin.fullDescription; },
- get version() { return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
- this._plugin.id); },
+ get version() {
+ if (this.isInstalled) {
+ return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
+ this._plugin.id);
+ }
+ return null;
+ },
get isActive() { return !this.appDisabled && !this.userDisabled; },
get appDisabled() {
@@ -289,24 +290,17 @@
get pluginMimeTypes() { return []; },
get pluginLibraries() {
- if (this.isInstalled) {
- let path = this.version;
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [OS.Path.basename(path)] : [];
},
get pluginFullpath() {
- if (this.isInstalled) {
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- this.version);
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [path] : [];
},
get isInstalled() {
- return this.version && this.version.length > 0;
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length > 0;
},
_handleEnabledChanged: function() {
@@ -362,10 +356,10 @@
}
},
- onPrefVersionChanged: function() {
+ onPrefPathChanged: function() {
AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
if (this._gmpPath) {
- this._log.info("onPrefVersionChanged() - unregistering gmp directory " +
+ this._log.info("onPrefPathChanged() - unregistering gmp directory " +
this._gmpPath);
gmpService.removePluginDirectory(this._gmpPath);
}
@@ -374,15 +368,10 @@
AddonManagerPrivate.callInstallListeners("onExternalInstall", null, this,
null, false);
AddonManagerPrivate.callAddonListeners("onInstalling", this, false);
- this._gmpPath = null;
- if (this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
- }
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH,
+ null, this._plugin.id);
if (this._gmpPath && this.isActive) {
- this._log.info("onPrefVersionChanged() - registering gmp directory " +
+ this._log.info("onPrefPathChanged() - registering gmp directory " +
this._gmpPath);
gmpService.addPluginDirectory(this._gmpPath);
}
@@ -393,9 +382,9 @@
Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.ignore(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);

View File

@ -3,7 +3,7 @@
PORTNAME= openh264
PORTVERSION= 1.4.0
DISTVERSIONPREFIX=v
PORTREVISION= 3
PORTREVISION= 4
CATEGORIES= multimedia
MAINTAINER= gecko@FreeBSD.org
@ -35,7 +35,7 @@ PLUGINS_USES= webplugin:gecko
WEBPLUGIN_NAME= gmp-gmp${PORTNAME}
WEBPLUGIN_FILES=gmp${PORTNAME}.info libgmp${PORTNAME}.so
SUB_FILES+= gmp${PORTNAME}.js
SUB_LIST+= PORTVERSION=${PORTVERSION} WEBPLUGIN_DIR="${WEBPLUGIN_DIR}"
SUB_LIST+= PORTVERSION=${PORTVERSION} TIMESTAMP="`date +%s`"
TEST_BUILD_DEPENDS=googletest>=1.6.0:${PORTSDIR}/devel/googletest
TEST_CFLAGS= -I${LOCALBASE}/include

View File

@ -1,2 +1,3 @@
pref("media.gmp-gmpopenh264.path", "%%WEBPLUGIN_DIR%%");
pref("media.gmp-gmpopenh264.autoupdate", false);
pref("media.gmp-gmpopenh264.lastUpdate", %%TIMESTAMP%%);
pref("media.gmp-gmpopenh264.version", "%%PORTVERSION%%");

View File

@ -4,6 +4,7 @@
PORTNAME= firefox
DISTVERSION= 38.2.0
DISTVERSIONSUFFIX=esr.source
PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source \

View File

@ -1,9 +1,10 @@
--- browser/app/nsBrowserApp.cpp~
+++ browser/app/nsBrowserApp.cpp
@@ -334,6 +334,7 @@ int main(int argc, char* argv[])
@@ -417,6 +417,8 @@ int main(int argc, char* argv[])
TriggerQuirks();
#endif
+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
int gotCounters;
#if defined(XP_UNIX)

View File

@ -1,239 +0,0 @@
# Revert bug 1045209 to allow using absolute path
diff --git dom/media/gmp/GMPChild.cpp dom/media/gmp/GMPChild.cpp
index 1dde3ac..12c88cf 100644
--- dom/media/gmp/GMPChild.cpp
+++ dom/media/gmp/GMPChild.cpp
@@ -76,21 +76,14 @@ GetFileBase(const std::string& aPluginPa
}
#endif
- nsCOMPtr<nsIFile> parent;
- rv = aFileBase->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return false;
- }
-
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
- if (NS_FAILED(rv)) {
+ nsAutoString leafName;
+ if (NS_FAILED(aFileBase->GetLeafName(leafName))) {
return false;
}
- aBaseName = Substring(parentLeafName,
+ aBaseName = Substring(leafName,
4,
- parentLeafName.Length() - 1);
+ leafName.Length() - 1);
return true;
}
diff --git dom/media/gmp/GMPParent.cpp dom/media/gmp/GMPParent.cpp
index aa60acf..90878ca 100644
--- dom/media/gmp/GMPParent.cpp
+++ dom/media/gmp/GMPParent.cpp
@@ -90,23 +90,16 @@
mService = aService;
mDirectory = aPluginDir;
- // aPluginDir is <profile-dir>/<gmp-plugin-id>/<version>
- // where <gmp-plugin-id> should be gmp-gmpopenh264
- nsCOMPtr<nsIFile> parent;
- nsresult rv = aPluginDir->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return rv;
- }
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
+ nsAutoString leafname;
+ nsresult rv = aPluginDir->GetLeafName(leafname);
if (NS_FAILED(rv)) {
return rv;
}
LOGD(("%s::%s: %p for %s", __CLASS__, __FUNCTION__, this,
- NS_LossyConvertUTF16toASCII(parentLeafName).get()));
+ NS_LossyConvertUTF16toASCII(leafname).get()));
- MOZ_ASSERT(parentLeafName.Length() > 4);
- mName = Substring(parentLeafName, 4);
+ MOZ_ASSERT(leafname.Length() > 4);
+ mName = Substring(leafname, 4);
return ReadGMPMetaData();
}
diff --git toolkit/modules/GMPInstallManager.jsm toolkit/modules/GMPInstallManager.jsm
index 9593492..470384b 100644
--- toolkit/modules/GMPInstallManager.jsm
+++ toolkit/modules/GMPInstallManager.jsm
@@ -888,9 +889,7 @@
let gmpAddon = this._gmpAddon;
let installToDirPath = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsIFile);
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- gmpAddon.id,
- gmpAddon.version);
+ let path = OS.Path.join(OS.Constants.Path.profileDir, gmpAddon.id);
installToDirPath.initWithPath(path);
log.info("install to directory path: " + installToDirPath.path);
let gmpInstaller = new GMPExtractor(zipPath, installToDirPath.path);
@@ -885,10 +883,12 @@
// Success, set the prefs
let now = Math.round(Date.now() / 1000);
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_LAST_UPDATE, now, gmpAddon.id);
- // Setting the version pref signals installation completion to consumers,
- // if you need to set other prefs etc. do it before this.
+ // Setting the path pref signals installation completion to consumers,
+ // so set the version and potential other information they use first.
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_VERSION, gmpAddon.version,
gmpAddon.id);
+ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_PATH,
+ installToDirPath.path, gmpAddon.id);
this._deferred.resolve(extractedPaths);
}, err => {
this._deferred.reject(err);
diff --git toolkit/modules/GMPUtils.jsm toolkit/modules/GMPUtils.jsm
index 1f3a0b1..93517be 100644
--- toolkit/modules/GMPUtils.jsm
+++ toolkit/modules/GMPUtils.jsm
@@ -70,6 +70,7 @@ this.GMPPrefs = {
KEY_EME_ENABLED: "media.eme.enabled",
KEY_PLUGIN_ENABLED: "media.{0}.enabled",
KEY_PLUGIN_LAST_UPDATE: "media.{0}.lastUpdate",
+ KEY_PLUGIN_PATH: "media.{0}.path",
KEY_PLUGIN_VERSION: "media.{0}.version",
KEY_PLUGIN_AUTOUPDATE: "media.{0}.autoupdate",
KEY_PLUGIN_FORCEVISIBLE: "media.{0}.forcevisible",
diff --git toolkit/mozapps/extensions/internal/GMPProvider.jsm toolkit/mozapps/extensions/internal/GMPProvider.jsm
index 1f3a0b1..93517be 100644
--- toolkit/mozapps/extensions/internal/GMPProvider.jsm
+++ toolkit/mozapps/extensions/internal/GMPProvider.jsm
@@ -100,12 +100,11 @@
Log.repository.getLoggerWithMessagePrefix("Toolkit.GMP",
"GMPWrapper(" +
this._plugin.id + ") ");
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
- this._plugin.id),
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED, this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.observe(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);
@@ -120,17 +119,14 @@
optionsType: AddonManager.OPTIONS_TYPE_INLINE,
get optionsURL() { return this._plugin.optionsURL; },
+
set gmpPath(aPath) { this._gmpPath = aPath; },
get gmpPath() {
- if (!this._gmpPath && this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
+ if (!this._gmpPath) {
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
}
return this._gmpPath;
},
-
get id() { return this._plugin.id; },
get type() { return "plugin"; },
get isGMPlugin() { return true; },
@@ -141,8 +137,13 @@
get description() { return this._plugin.description; },
get fullDescription() { return this._plugin.fullDescription; },
- get version() { return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
- this._plugin.id); },
+ get version() {
+ if (this.isInstalled) {
+ return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
+ this._plugin.id);
+ }
+ return null;
+ },
get isActive() { return !this.appDisabled && !this.userDisabled; },
get appDisabled() {
@@ -289,24 +290,17 @@
get pluginMimeTypes() { return []; },
get pluginLibraries() {
- if (this.isInstalled) {
- let path = this.version;
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [OS.Path.basename(path)] : [];
},
get pluginFullpath() {
- if (this.isInstalled) {
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- this.version);
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [path] : [];
},
get isInstalled() {
- return this.version && this.version.length > 0;
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length > 0;
},
_handleEnabledChanged: function() {
@@ -362,10 +356,10 @@
}
},
- onPrefVersionChanged: function() {
+ onPrefPathChanged: function() {
AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
if (this._gmpPath) {
- this._log.info("onPrefVersionChanged() - unregistering gmp directory " +
+ this._log.info("onPrefPathChanged() - unregistering gmp directory " +
this._gmpPath);
gmpService.removePluginDirectory(this._gmpPath);
}
@@ -374,15 +368,10 @@
AddonManagerPrivate.callInstallListeners("onExternalInstall", null, this,
null, false);
AddonManagerPrivate.callAddonListeners("onInstalling", this, false);
- this._gmpPath = null;
- if (this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
- }
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH,
+ null, this._plugin.id);
if (this._gmpPath && this.isActive) {
- this._log.info("onPrefVersionChanged() - registering gmp directory " +
+ this._log.info("onPrefPathChanged() - registering gmp directory " +
this._gmpPath);
gmpService.addPluginDirectory(this._gmpPath);
}
@@ -393,9 +382,9 @@
Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.ignore(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);

View File

@ -4,7 +4,7 @@
PORTNAME= firefox
DISTVERSION= 40.0
DISTVERSIONSUFFIX=.source
PORTREVISION= 1
PORTREVISION= 2
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \

View File

@ -1,9 +1,10 @@
--- browser/app/nsBrowserApp.cpp~
+++ browser/app/nsBrowserApp.cpp
@@ -334,6 +334,7 @@ int main(int argc, char* argv[])
@@ -417,6 +417,8 @@ int main(int argc, char* argv[])
TriggerQuirks();
#endif
+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
int gotCounters;
#if defined(XP_UNIX)

View File

@ -1,231 +0,0 @@
# Revert bug 1045209 to allow using absolute path
diff --git dom/media/gmp/GMPChild.cpp dom/media/gmp/GMPChild.cpp
index 1dde3ac..12c88cf 100644
--- dom/media/gmp/GMPChild.cpp
+++ dom/media/gmp/GMPChild.cpp
@@ -76,21 +76,14 @@ GetFileBase(const std::string& aPluginPa
}
#endif
- nsCOMPtr<nsIFile> parent;
- rv = aFileBase->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return false;
- }
-
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
- if (NS_FAILED(rv)) {
+ nsAutoString leafName;
+ if (NS_FAILED(aFileBase->GetLeafName(leafName))) {
return false;
}
- aBaseName = Substring(parentLeafName,
+ aBaseName = Substring(leafName,
4,
- parentLeafName.Length() - 1);
+ leafName.Length() - 1);
return true;
}
diff --git dom/media/gmp/GMPParent.cpp dom/media/gmp/GMPParent.cpp
index aa60acf..90878ca 100644
--- dom/media/gmp/GMPParent.cpp
+++ dom/media/gmp/GMPParent.cpp
@@ -93,22 +93,15 @@
mService = aService;
mDirectory = aPluginDir;
- // aPluginDir is <profile-dir>/<gmp-plugin-id>/<version>
- // where <gmp-plugin-id> should be gmp-gmpopenh264
- nsCOMPtr<nsIFile> parent;
- nsresult rv = aPluginDir->GetParent(getter_AddRefs(parent));
+ nsAutoString leafname;
+ nsresult rv = aPluginDir->GetLeafName(leafname);
if (NS_FAILED(rv)) {
return rv;
}
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
- if (NS_FAILED(rv)) {
- return rv;
- }
- LOGD("%s: for %s", __FUNCTION__, NS_LossyConvertUTF16toASCII(parentLeafName).get());
+ LOGD("%s: for %s", __FUNCTION__, NS_LossyConvertUTF16toASCII(leafname).get());
- MOZ_ASSERT(parentLeafName.Length() > 4);
- mName = Substring(parentLeafName, 4);
+ MOZ_ASSERT(leafname.Length() > 4);
+ mName = Substring(leafname, 4);
return ReadGMPMetaData();
}
diff --git toolkit/modules/GMPInstallManager.jsm toolkit/modules/GMPInstallManager.jsm
index 9593492..470384b 100644
--- toolkit/modules/GMPInstallManager.jsm
+++ toolkit/modules/GMPInstallManager.jsm
@@ -888,9 +889,7 @@
let gmpAddon = this._gmpAddon;
let installToDirPath = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsIFile);
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- gmpAddon.id,
- gmpAddon.version);
+ let path = OS.Path.join(OS.Constants.Path.profileDir, gmpAddon.id);
installToDirPath.initWithPath(path);
log.info("install to directory path: " + installToDirPath.path);
let gmpInstaller = new GMPExtractor(zipPath, installToDirPath.path);
@@ -895,10 +893,12 @@ GMPDownloader.prototype = {
// Success, set the prefs
let now = Math.round(Date.now() / 1000);
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_LAST_UPDATE, now, gmpAddon.id);
- // Setting the version pref signals installation completion to consumers,
- // if you need to set other prefs etc. do it before this.
+ // Setting the path pref signals installation completion to consumers,
+ // so set the version and potential other information they use first.
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_VERSION, gmpAddon.version,
gmpAddon.id);
+ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_PATH,
+ installToDirPath.path, gmpAddon.id);
// Reset the trial create pref, so that Gecko knows to do a test
// run before reporting that the GMP works to content.
GMPPrefs.reset(GMPPrefs.KEY_PLUGIN_TRIAL_CREATE, gmpAddon.version,
diff --git toolkit/modules/GMPUtils.jsm toolkit/modules/GMPUtils.jsm
index 1f3a0b1..93517be 100644
--- toolkit/modules/GMPUtils.jsm
+++ toolkit/modules/GMPUtils.jsm
@@ -70,6 +70,7 @@ this.GMPPrefs = {
KEY_EME_ENABLED: "media.eme.enabled",
KEY_PLUGIN_ENABLED: "media.{0}.enabled",
KEY_PLUGIN_LAST_UPDATE: "media.{0}.lastUpdate",
+ KEY_PLUGIN_PATH: "media.{0}.path",
KEY_PLUGIN_VERSION: "media.{0}.version",
KEY_PLUGIN_AUTOUPDATE: "media.{0}.autoupdate",
KEY_PLUGIN_FORCEVISIBLE: "media.{0}.forcevisible",
diff --git toolkit/mozapps/extensions/internal/GMPProvider.jsm toolkit/mozapps/extensions/internal/GMPProvider.jsm
index 1f3a0b1..93517be 100644
--- toolkit/mozapps/extensions/internal/GMPProvider.jsm
+++ toolkit/mozapps/extensions/internal/GMPProvider.jsm
@@ -100,12 +100,11 @@
Log.repository.getLoggerWithMessagePrefix("Toolkit.GMP",
"GMPWrapper(" +
this._plugin.id + ") ");
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
- this._plugin.id),
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED, this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.observe(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);
@@ -135,11 +134,8 @@ GMPWrapper.prototype = {
set gmpPath(aPath) { this._gmpPath = aPath; },
get gmpPath() {
- if (!this._gmpPath && this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
+ if (!this._gmpPath) {
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
}
return this._gmpPath;
},
@@ -158,8 +154,13 @@ GMPWrapper.prototype = {
get description() { return this._plugin.description; },
get fullDescription() { return this._plugin.fullDescription; },
- get version() { return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
- this._plugin.id); },
+ get version() {
+ if (this.isInstalled) {
+ return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
+ this._plugin.id);
+ }
+ return null;
+ },
get isActive() { return !this.appDisabled && !this.userDisabled; },
get appDisabled() {
@@ -289,24 +290,17 @@
get pluginMimeTypes() { return []; },
get pluginLibraries() {
- if (this.isInstalled) {
- let path = this.version;
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [OS.Path.basename(path)] : [];
},
get pluginFullpath() {
- if (this.isInstalled) {
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- this.version);
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [path] : [];
},
get isInstalled() {
- return this.version && this.version.length > 0;
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length > 0;
},
_handleEnabledChanged: function() {
@@ -362,10 +356,10 @@
}
},
- onPrefVersionChanged: function() {
+ onPrefPathChanged: function() {
AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
if (this._gmpPath) {
- this._log.info("onPrefVersionChanged() - unregistering gmp directory " +
+ this._log.info("onPrefPathChanged() - unregistering gmp directory " +
this._gmpPath);
gmpService.removeAndDeletePluginDirectory(this._gmpPath, true /* can defer */);
}
@@ -415,15 +409,10 @@ GMPWrapper.prototype = {
AddonManagerPrivate.callInstallListeners("onExternalInstall", null, this,
null, false);
AddonManagerPrivate.callAddonListeners("onInstalling", this, false);
- this._gmpPath = null;
- if (this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
- }
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH,
+ null, this._plugin.id);
if (this._gmpPath && this.isActive) {
- this._log.info("onPrefVersionChanged() - registering gmp directory " +
+ this._log.info("onPrefPathChanged() - registering gmp directory " +
this._gmpPath);
gmpService.addPluginDirectory(this._gmpPath);
}
@@ -393,9 +382,9 @@
Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.ignore(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);

View File

@ -3,6 +3,7 @@
PORTNAME= libxul
DISTVERSION= 38.2.0
PORTREVISION= 1
CATEGORIES?= www devel
MASTER_SITES= MOZILLA/firefox/releases/${DISTVERSION}esr/source \
MOZILLA/firefox/candidates/${DISTVERSION}esr-candidates/build2/source

View File

@ -1,239 +0,0 @@
# Revert bug 1045209 to allow using absolute path
diff --git dom/media/gmp/GMPChild.cpp dom/media/gmp/GMPChild.cpp
index 1dde3ac..12c88cf 100644
--- dom/media/gmp/GMPChild.cpp
+++ dom/media/gmp/GMPChild.cpp
@@ -76,21 +76,14 @@ GetFileBase(const std::string& aPluginPa
}
#endif
- nsCOMPtr<nsIFile> parent;
- rv = aFileBase->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return false;
- }
-
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
- if (NS_FAILED(rv)) {
+ nsAutoString leafName;
+ if (NS_FAILED(aFileBase->GetLeafName(leafName))) {
return false;
}
- aBaseName = Substring(parentLeafName,
+ aBaseName = Substring(leafName,
4,
- parentLeafName.Length() - 1);
+ leafName.Length() - 1);
return true;
}
diff --git dom/media/gmp/GMPParent.cpp dom/media/gmp/GMPParent.cpp
index aa60acf..90878ca 100644
--- dom/media/gmp/GMPParent.cpp
+++ dom/media/gmp/GMPParent.cpp
@@ -90,23 +90,16 @@
mService = aService;
mDirectory = aPluginDir;
- // aPluginDir is <profile-dir>/<gmp-plugin-id>/<version>
- // where <gmp-plugin-id> should be gmp-gmpopenh264
- nsCOMPtr<nsIFile> parent;
- nsresult rv = aPluginDir->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return rv;
- }
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
+ nsAutoString leafname;
+ nsresult rv = aPluginDir->GetLeafName(leafname);
if (NS_FAILED(rv)) {
return rv;
}
LOGD(("%s::%s: %p for %s", __CLASS__, __FUNCTION__, this,
- NS_LossyConvertUTF16toASCII(parentLeafName).get()));
+ NS_LossyConvertUTF16toASCII(leafname).get()));
- MOZ_ASSERT(parentLeafName.Length() > 4);
- mName = Substring(parentLeafName, 4);
+ MOZ_ASSERT(leafname.Length() > 4);
+ mName = Substring(leafname, 4);
return ReadGMPMetaData();
}
diff --git toolkit/modules/GMPInstallManager.jsm toolkit/modules/GMPInstallManager.jsm
index 9593492..470384b 100644
--- toolkit/modules/GMPInstallManager.jsm
+++ toolkit/modules/GMPInstallManager.jsm
@@ -888,9 +889,7 @@
let gmpAddon = this._gmpAddon;
let installToDirPath = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsIFile);
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- gmpAddon.id,
- gmpAddon.version);
+ let path = OS.Path.join(OS.Constants.Path.profileDir, gmpAddon.id);
installToDirPath.initWithPath(path);
log.info("install to directory path: " + installToDirPath.path);
let gmpInstaller = new GMPExtractor(zipPath, installToDirPath.path);
@@ -885,10 +883,12 @@
// Success, set the prefs
let now = Math.round(Date.now() / 1000);
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_LAST_UPDATE, now, gmpAddon.id);
- // Setting the version pref signals installation completion to consumers,
- // if you need to set other prefs etc. do it before this.
+ // Setting the path pref signals installation completion to consumers,
+ // so set the version and potential other information they use first.
GMPPrefs.set(GMPPrefs.KEY_PLUGIN_VERSION, gmpAddon.version,
gmpAddon.id);
+ GMPPrefs.set(GMPPrefs.KEY_PLUGIN_PATH,
+ installToDirPath.path, gmpAddon.id);
this._deferred.resolve(extractedPaths);
}, err => {
this._deferred.reject(err);
diff --git toolkit/modules/GMPUtils.jsm toolkit/modules/GMPUtils.jsm
index 1f3a0b1..93517be 100644
--- toolkit/modules/GMPUtils.jsm
+++ toolkit/modules/GMPUtils.jsm
@@ -70,6 +70,7 @@ this.GMPPrefs = {
KEY_EME_ENABLED: "media.eme.enabled",
KEY_PLUGIN_ENABLED: "media.{0}.enabled",
KEY_PLUGIN_LAST_UPDATE: "media.{0}.lastUpdate",
+ KEY_PLUGIN_PATH: "media.{0}.path",
KEY_PLUGIN_VERSION: "media.{0}.version",
KEY_PLUGIN_AUTOUPDATE: "media.{0}.autoupdate",
KEY_PLUGIN_FORCEVISIBLE: "media.{0}.forcevisible",
diff --git toolkit/mozapps/extensions/internal/GMPProvider.jsm toolkit/mozapps/extensions/internal/GMPProvider.jsm
index 1f3a0b1..93517be 100644
--- toolkit/mozapps/extensions/internal/GMPProvider.jsm
+++ toolkit/mozapps/extensions/internal/GMPProvider.jsm
@@ -100,12 +100,11 @@
Log.repository.getLoggerWithMessagePrefix("Toolkit.GMP",
"GMPWrapper(" +
this._plugin.id + ") ");
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
- this._plugin.id),
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED, this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.observe(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.observe(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);
@@ -120,17 +119,14 @@
optionsType: AddonManager.OPTIONS_TYPE_INLINE,
get optionsURL() { return this._plugin.optionsURL; },
+
set gmpPath(aPath) { this._gmpPath = aPath; },
get gmpPath() {
- if (!this._gmpPath && this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
+ if (!this._gmpPath) {
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
}
return this._gmpPath;
},
-
get id() { return this._plugin.id; },
get type() { return "plugin"; },
get isGMPlugin() { return true; },
@@ -141,8 +137,13 @@
get description() { return this._plugin.description; },
get fullDescription() { return this._plugin.fullDescription; },
- get version() { return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
- this._plugin.id); },
+ get version() {
+ if (this.isInstalled) {
+ return GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION, null,
+ this._plugin.id);
+ }
+ return null;
+ },
get isActive() { return !this.appDisabled && !this.userDisabled; },
get appDisabled() {
@@ -289,24 +290,17 @@
get pluginMimeTypes() { return []; },
get pluginLibraries() {
- if (this.isInstalled) {
- let path = this.version;
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [OS.Path.basename(path)] : [];
},
get pluginFullpath() {
- if (this.isInstalled) {
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- this.version);
- return [path];
- }
- return [];
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length ? [path] : [];
},
get isInstalled() {
- return this.version && this.version.length > 0;
+ let path = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH, null, this._plugin.id);
+ return path && path.length > 0;
},
_handleEnabledChanged: function() {
@@ -362,10 +356,10 @@
}
},
- onPrefVersionChanged: function() {
+ onPrefPathChanged: function() {
AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
if (this._gmpPath) {
- this._log.info("onPrefVersionChanged() - unregistering gmp directory " +
+ this._log.info("onPrefPathChanged() - unregistering gmp directory " +
this._gmpPath);
gmpService.removePluginDirectory(this._gmpPath);
}
@@ -374,15 +368,10 @@
AddonManagerPrivate.callInstallListeners("onExternalInstall", null, this,
null, false);
AddonManagerPrivate.callAddonListeners("onInstalling", this, false);
- this._gmpPath = null;
- if (this.isInstalled) {
- this._gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- this._plugin.id,
- GMPPrefs.get(GMPPrefs.KEY_PLUGIN_VERSION,
- null, this._plugin.id));
- }
+ this._gmpPath = GMPPrefs.get(GMPPrefs.KEY_PLUGIN_PATH,
+ null, this._plugin.id);
if (this._gmpPath && this.isActive) {
- this._log.info("onPrefVersionChanged() - registering gmp directory " +
+ this._log.info("onPrefPathChanged() - registering gmp directory " +
this._gmpPath);
gmpService.addPluginDirectory(this._gmpPath);
}
@@ -393,9 +382,9 @@
Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_ENABLED,
this._plugin.id),
this.onPrefEnabledChanged, this);
- Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_VERSION,
+ Preferences.ignore(GMPPrefs.getPrefKey(GMPPrefs.KEY_PLUGIN_PATH,
this._plugin.id),
- this.onPrefVersionChanged, this);
+ this.onPrefPathChanged, this);
if (this._plugin.isEME) {
Preferences.ignore(GMPPrefs.KEY_EME_ENABLED,
this.onPrefEMEGlobalEnabledChanged, this);

View File

@ -1,9 +1,10 @@
--- xulrunner/stub/nsXULStub.cpp~
+++ xulrunner/stub/nsXULStub.cpp
@@ -202,6 +202,8 @@ main(int argc, char **argv)
@@ -160,6 +160,9 @@ main(int argc, char **argv)
char greDir[MAXPATHLEN];
bool greFound = false;
+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+
#if defined(XP_MACOSX)

View File

@ -3,7 +3,7 @@
PORTNAME= seamonkey
DISTVERSION= 2.33.1
PORTREVISION= 4
PORTREVISION= 5
CATEGORIES?= www mail news editors irc ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source

View File

@ -1,11 +1,21 @@
--- suite/app/nsSuiteApp.cpp~
+++ suite/app/nsSuiteApp.cpp
@@ -215,6 +215,8 @@ int main(int argc, char* argv[])
#ifdef XP_MACOSX
@@ -331,6 +331,9 @@ int main(int argc, char* argv[])
TriggerQuirks();
#endif
+
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath);
if (NS_FAILED(rv)) {
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+
int gotCounters;
#if defined(XP_UNIX)
struct rusage initialRUsage;
@@ -339,7 +342,7 @@ int main(int argc, char* argv[])
IO_COUNTERS ioCounters;
gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters);
#endif
-
+
nsIFile *xreDirectory;
#ifdef HAS_DLL_BLOCKLIST

View File

@ -1,221 +0,0 @@
# Revert bug 1045209 to allow using absolute path
diff --git dom/media/gmp/GMPChild.cpp dom/media/gmp/GMPChild.cpp
index 1dde3ac..12c88cf 100644
--- mozilla/dom/media/gmp/GMPChild.cpp
+++ mozilla/dom/media/gmp/GMPChild.cpp
@@ -76,21 +76,14 @@ GetFileBase(const std::string& aPluginPa
}
#endif
- nsCOMPtr<nsIFile> parent;
- rv = aFileBase->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return false;
- }
-
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
- if (NS_FAILED(rv)) {
+ nsAutoString leafName;
+ if (NS_FAILED(aFileBase->GetLeafName(leafName))) {
return false;
}
- aBaseName = Substring(parentLeafName,
+ aBaseName = Substring(leafName,
4,
- parentLeafName.Length() - 1);
+ leafName.Length() - 1);
return true;
}
diff --git dom/media/gmp/GMPParent.cpp dom/media/gmp/GMPParent.cpp
index aa60acf..90878ca 100644
--- mozilla/dom/media/gmp/GMPParent.cpp
+++ mozilla/dom/media/gmp/GMPParent.cpp
@@ -90,23 +90,16 @@
mService = aService;
mDirectory = aPluginDir;
- // aPluginDir is <profile-dir>/<gmp-plugin-id>/<version>
- // where <gmp-plugin-id> should be gmp-gmpopenh264
- nsCOMPtr<nsIFile> parent;
- nsresult rv = aPluginDir->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv)) {
- return rv;
- }
- nsAutoString parentLeafName;
- rv = parent->GetLeafName(parentLeafName);
+ nsAutoString leafname;
+ nsresult rv = aPluginDir->GetLeafName(leafname);
if (NS_FAILED(rv)) {
return rv;
}
LOGD(("%s::%s: %p for %s", __CLASS__, __FUNCTION__, this,
- NS_LossyConvertUTF16toASCII(parentLeafName).get()));
+ NS_LossyConvertUTF16toASCII(leafname).get()));
- MOZ_ASSERT(parentLeafName.Length() > 4);
- mName = Substring(parentLeafName, 4);
+ MOZ_ASSERT(leafname.Length() > 4);
+ mName = Substring(leafname, 4);
return ReadGMPMetaData();
}
diff --git toolkit/modules/GMPInstallManager.jsm toolkit/modules/GMPInstallManager.jsm
index 9593492..470384b 100644
--- mozilla/toolkit/modules/GMPInstallManager.jsm
+++ mozilla/toolkit/modules/GMPInstallManager.jsm
@@ -107,6 +107,7 @@
*/
KEY_LOG_ENABLED: "media.gmp-manager.log",
KEY_ADDON_LAST_UPDATE: "media.{0}.lastUpdate",
+ KEY_ADDON_PATH: "media.{0}.path",
KEY_ADDON_VERSION: "media.{0}.version",
KEY_ADDON_AUTOUPDATE: "media.{0}.autoupdate",
KEY_URL: "media.gmp-manager.url",
@@ -888,9 +889,7 @@
let gmpAddon = this._gmpAddon;
let installToDirPath = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsIFile);
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- gmpAddon.id,
- gmpAddon.version);
+ let path = OS.Path.join(OS.Constants.Path.profileDir, gmpAddon.id);
installToDirPath.initWithPath(path);
log.info("install to directory path: " + installToDirPath.path);
let gmpInstaller = new GMPExtractor(zipPath, installToDirPath.path);
@@ -899,10 +898,12 @@
// Success, set the prefs
let now = Math.round(Date.now() / 1000);
GMPPrefs.set(GMPPrefs.KEY_ADDON_LAST_UPDATE, now, gmpAddon.id);
- // Setting the version pref signals installation completion to consumers,
- // if you need to set other prefs etc. do it before this.
+ // Setting the path pref signals installation completion to consumers,
+ // so set the version and potential other information they use first.
GMPPrefs.set(GMPPrefs.KEY_ADDON_VERSION, gmpAddon.version,
gmpAddon.id);
+ GMPPrefs.set(GMPPrefs.KEY_ADDON_PATH,
+ installToDirPath.path, gmpAddon.id);
this._deferred.resolve(extractedPaths);
}, err => {
this._deferred.reject(err);
diff --git toolkit/mozapps/extensions/internal/OpenH264Provider.jsm toolkit/mozapps/extensions/internal/OpenH264Provider.jsm
index 1f3a0b1..93517be 100644
--- mozilla/toolkit/mozapps/extensions/internal/OpenH264Provider.jsm
+++ mozilla/toolkit/mozapps/extensions/internal/OpenH264Provider.jsm
@@ -29,6 +29,7 @@
const OPENH264_PLUGIN_ID = "gmp-gmpopenh264";
const OPENH264_PREF_BRANCH = "media." + OPENH264_PLUGIN_ID + ".";
const OPENH264_PREF_ENABLED = "enabled";
+const OPENH264_PREF_PATH = "path";
const OPENH264_PREF_VERSION = "version";
const OPENH264_PREF_LASTUPDATE = "lastUpdate";
const OPENH264_PREF_AUTOUPDATE = "autoupdate";
@@ -93,7 +94,12 @@
get description() { return pluginsBundle.GetStringFromName("openH264_description"); },
- get version() { return prefs.get(OPENH264_PREF_VERSION, ""); },
+ get version() {
+ if (this.isInstalled) {
+ return prefs.get(OPENH264_PREF_VERSION, "");
+ }
+ return "";
+ },
get isActive() { return !this.userDisabled; },
get appDisabled() { return false; },
@@ -217,24 +223,17 @@
get pluginMimeTypes() { return []; },
get pluginLibraries() {
- if (this.isInstalled) {
- let path = this.version;
- return [path];
- }
- return [];
+ let path = prefs.get(OPENH264_PREF_PATH, null);
+ return path && path.length ? [OS.Path.basename(path)] : [];
},
get pluginFullpath() {
- if (this.isInstalled) {
- let path = OS.Path.join(OS.Constants.Path.profileDir,
- OPENH264_PLUGIN_ID,
- this.version);
- return [path];
- }
- return [];
+ let path = prefs.get(OPENH264_PREF_PATH, null);
+ return path && path.length ? [path] : [];
},
get isInstalled() {
- return this.version.length > 0;
+ let path = prefs.get(OPENH264_PREF_PATH, "");
+ return path.length > 0;
},
};
@@ -245,19 +244,14 @@
"OpenH264Provider" + "::");
OpenH264Wrapper._log = Log.repository.getLoggerWithMessagePrefix("Toolkit.OpenH264Provider",
"OpenH264Wrapper" + "::");
- this.gmpPath = null;
- if (OpenH264Wrapper.isInstalled) {
- this.gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- OPENH264_PLUGIN_ID,
- prefs.get(OPENH264_PREF_VERSION, null));
- }
+ this.gmpPath = prefs.get(OPENH264_PREF_PATH, null);
let enabled = prefs.get(OPENH264_PREF_ENABLED, true);
this._log.trace("startup() - enabled=" + enabled + ", gmpPath="+this.gmpPath);
Services.obs.addObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false);
prefs.observe(OPENH264_PREF_ENABLED, this.onPrefEnabledChanged, this);
- prefs.observe(OPENH264_PREF_VERSION, this.onPrefVersionChanged, this);
+ prefs.observe(OPENH264_PREF_PATH, this.onPrefPathChanged, this);
prefs.observe(OPENH264_PREF_LOGGING, configureLogging);
if (this.gmpPath && enabled) {
@@ -270,7 +264,7 @@
this._log.trace("shutdown()");
Services.obs.removeObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED);
prefs.ignore(OPENH264_PREF_ENABLED, this.onPrefEnabledChanged, this);
- prefs.ignore(OPENH264_PREF_VERSION, this.onPrefVersionChanged, this);
+ prefs.ignore(OPENH264_PREF_PATH, this.onPrefPathChanged, this);
prefs.ignore(OPENH264_PREF_LOGGING, configureLogging);
return OpenH264Wrapper._updateTask;
@@ -296,25 +290,20 @@
wrapper);
},
- onPrefVersionChanged: function() {
+ onPrefPathChanged: function() {
let wrapper = OpenH264Wrapper;
AddonManagerPrivate.callAddonListeners("onUninstalling", wrapper, false);
if (this.gmpPath) {
- this._log.info("onPrefVersionChanged() - unregistering gmp directory " + this.gmpPath);
+ this._log.info("onPrefPathChanged() - removing gmp directory " + this.gmpPath);
gmpService.removePluginDirectory(this.gmpPath);
}
AddonManagerPrivate.callAddonListeners("onUninstalled", wrapper);
AddonManagerPrivate.callInstallListeners("onExternalInstall", null, wrapper, null, false);
- this.gmpPath = null;
- if (OpenH264Wrapper.isInstalled) {
- this.gmpPath = OS.Path.join(OS.Constants.Path.profileDir,
- OPENH264_PLUGIN_ID,
- prefs.get(OPENH264_PREF_VERSION, null));
- }
+ this.gmpPath = prefs.get(OPENH264_PREF_PATH, null);
if (this.gmpPath && wrapper.isActive) {
- this._log.info("onPrefVersionChanged() - registering gmp directory " + this.gmpPath);
+ this._log.info("onPrefPathChanged() - adding gmp directory " + this.gmpPath);
gmpService.addPluginDirectory(this.gmpPath);
}
AddonManagerPrivate.callAddonListeners("onInstalled", wrapper);