Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:11.4
mozilla-xulrunner192
mozilla-prefer_plugin_pref.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File mozilla-prefer_plugin_pref.patch of Package mozilla-xulrunner192
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 @@ -3929,8 +3929,41 @@ nsPluginHost::FindPluginForType(const ch // if we have a mimetype passed in, search the mPlugins // linked list for a match if (nsnull != aMimeType) { + 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); + + 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; + } + + // 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; + } + } + + // if there is no pref for this mime-type, or if the plugin named in pref + // isn't found, we pick the first that matches for this mime-type + plugins = mPlugins; while (nsnull != plugins) { variants = plugins->mVariants; for (cnt = 0; cnt < variants; cnt++) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor