mozilla-prefer_plugin_pref.patch
changeset 289 3c0dff7ca9c4
parent 123 1d88ea95ad20
child 367 3fabd9f66322
--- 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;
+         }
+       }