--- a/mozilla-prefer_plugin_pref.patch Thu Jul 07 08:00:10 2011 +0200
+++ b/mozilla-prefer_plugin_pref.patch Fri Jul 08 08:21:23 2011 +0200
@@ -1,54 +1,55 @@
From: Ubuntu
Subject: introduce a pref to prefer certain plugins for mime-types
-diff --git a/modules/plugin/base/src/nsPluginHost.cpp b/modules/plugin/base/src/nsPluginHost.cpp
---- a/modules/plugin/base/src/nsPluginHost.cpp
-+++ b/modules/plugin/base/src/nsPluginHost.cpp
-@@ -1620,17 +1620,47 @@ nsPluginHost::FindPluginForType(const ch
- nsPluginTag *plugins = nsnull;
- PRInt32 variants, cnt;
+diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
+--- a/dom/plugins/base/nsPluginHost.cpp
++++ b/dom/plugins/base/nsPluginHost.cpp
+@@ -1637,17 +1637,48 @@ nsPluginHost::FindPluginForType(const ch
+ PRBool aCheckEnabled)
+ {
+ if (!aMimeType) {
+ return nsnull;
+ }
LoadPlugins();
- // if we have a mimetype passed in, search the mPlugins
- // linked list for a match
- if (aMimeType) {
-+ nsresult res;
-+ nsCOMPtr<nsIPrefBranch> prefB (do_QueryInterface(mPrefService));
++ nsresult res;
++ nsCOMPtr<nsIPrefBranch> prefB (do_QueryInterface(mPrefService));
+
-+ char *preferredPluginPath = NULL;
-+ nsCAutoString mimetypePrefString ("modules.plugins.mimetype.");
-+ mimetypePrefString.Append(aMimeType);
-+ const char *mimetypePrefChar = mimetypePrefString.get();
-+ res = prefB->GetCharPref(mimetypePrefChar, &preferredPluginPath);
++ char *preferredPluginPath = NULL;
++ nsCAutoString mimetypePrefString ("modules.plugins.mimetype.");
++ mimetypePrefString.Append(aMimeType);
++ const char *mimetypePrefChar = mimetypePrefString.get();
++ res = prefB->GetCharPref(mimetypePrefChar, &preferredPluginPath);
+
-+ if(!NS_SUCCEEDED(res)) preferredPluginPath = NULL;
++ if(!NS_SUCCEEDED(res)) preferredPluginPath = NULL;
+
- plugins = mPlugins;
-+ if(preferredPluginPath) {
-+ while (nsnull != plugins) {
-+ if (0 == PL_strcasecmp(plugins->mFileName.get(), preferredPluginPath) ||
-+ 0 == PL_strcasecmp(plugins->mFullPath.get(), preferredPluginPath)) {
-+ return plugins;
-+ }
-+ plugins = plugins->mNext;
+ nsPluginTag *plugin = mPlugins;
++ if(preferredPluginPath) {
++ while (nsnull != plugin) {
++ if (0 == PL_strcasecmp(plugin->mFileName.get(), preferredPluginPath) ||
++ 0 == PL_strcasecmp(plugin->mFullPath.get(), preferredPluginPath)) {
++ return plugin;
+ }
++ plugin = plugin->mNext;
++ }
+
-+ // now lets search for substrings
-+ plugins=mPlugins;
-+ while (nsnull != plugins) {
-+ if (nsnull != PL_strstr(plugins->mFileName.get(), preferredPluginPath) ||
-+ nsnull != PL_strstr(plugins->mFullPath.get(), preferredPluginPath)) {
-+ return plugins;
-+ }
-+ plugins = plugins->mNext;
++ // now lets search for substrings
++ plugin = mPlugins;
++ while (nsnull != plugin) {
++ if (nsnull != PL_strstr(plugin->mFileName.get(), preferredPluginPath) ||
++ nsnull != PL_strstr(plugin->mFullPath.get(), preferredPluginPath)) {
++ return plugin;
+ }
++ plugin = plugin->mNext;
+ }
-
- while (plugins) {
- variants = plugins->mVariants;
- for (cnt = 0; cnt < variants; cnt++) {
- if ((!aCheckEnabled || plugins->IsEnabled()) &&
- plugins->mMimeTypeArray[cnt] &&
- (0 == PL_strcasecmp(plugins->mMimeTypeArray[cnt], aMimeType))) {
- return plugins;
++ }
++
+ while (plugin) {
+ if (!aCheckEnabled || plugin->IsEnabled()) {
+ PRInt32 mimeCount = plugin->mMimeTypes.Length();
+ for (PRInt32 i = 0; i < mimeCount; i++) {
+ if (0 == PL_strcasecmp(plugin->mMimeTypes[i].get(), aMimeType)) {
+ return plugin;
+ }
+ }