diff -r d51f3999a1c2 -r 3c0dff7ca9c4 mozilla-prefer_plugin_pref.patch --- 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 prefB (do_QueryInterface(mPrefService)); ++ nsresult res; ++ nsCOMPtr 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; + } + }