Closed
Bug 939796
Opened 11 years ago
Closed 8 years ago
Disable loading gtk2 plugins to gtk3 browser
Categories
(Core Graveyard :: Plug-ins, defect)
Tracking
(Not tracked)
RESOLVED
INCOMPLETE
People
(Reporter: stransky, Assigned: stransky)
References
Details
Attachments
(1 file, 1 obsolete file)
(deleted),
patch
|
jaas
:
review+
|
Details | Diff | Splinter Review |
We can't load gtk2 plugin to gtk3 browser.
Attachment #8333855 -
Flags: review?(joshmoz)
Comment 1•11 years ago
|
||
Does this work because gtk3 plugins don't import the symbol gtk_major_version but gtk2 plugins do? I wasn't aware that PR_FindSymbol worked for imported dynamic symbols: I thought it only worked for exported symbols.
Assignee | ||
Comment 2•11 years ago
|
||
(In reply to Benjamin Smedberg [:bsmedberg] from comment #1)
> Does this work because gtk3 plugins don't import the symbol
> gtk_major_version but gtk2 plugins do? I wasn't aware that PR_FindSymbol
> worked for imported dynamic symbols: I thought it only worked for exported
> symbols.
Yes, gtk_major_version is imported by gtk2 plug-ins from gtk libraries. For instance is listed as "unresolved" by flash plugin:
$ nm -D /usr/lib64/mozilla/plugins/libflashplayer.so | grep gtk_major_version
U gtk_major_version
But I used it for gtk3/gtk3 plugin host switch and works as expected:
handle = dlopen(aFilePath, RTLD_LOCAL|RTLD_LAZY);
void *version = dlsym(handle, "gtk_major_version");
And the dlsym is also used by PR_FindSymbol:
http://mxr.mozilla.org/mozilla-central/source/nsprpub/pr/src/linking/prlink.c#1161
Assignee | ||
Comment 3•11 years ago
|
||
To be correct here the gtk_major_version is an integer, not function.
Comment on attachment 8333855 [details] [diff] [review]
disable_gtk2_plugins.patch
Review of attachment 8333855 [details] [diff] [review]:
-----------------------------------------------------------------
::: dom/plugins/base/PluginPRLibrary.h
@@ +83,5 @@
> + /* We can't load gtk2 plug-in in gtk3 browser.
> + * The gtk_major_version symbol is only in gtk2 library. */
> + if(PR_FindSymbol(mLibrary, "gtk_major_version"))
> + return false;
> +#endif
This doesn't seem like the right place to be doing this check. Yeah, you're checking for a symbol, but it's not a required *NPAPI* symbol, which is the context for that code.
Your issue has to do with whether or not it's a suitable library to use. I think 'nsPluginsDirUnix.cpp' is a better place for that stuff, can you move your check there?
Attachment #8333855 -
Flags: review?(joshmoz)
Assignee | ||
Comment 5•11 years ago
|
||
Thanks, so something like that?
Attachment #8333855 -
Attachment is obsolete: true
Attachment #8341721 -
Flags: review?(joshmoz)
Comment on attachment 8341721 [details] [diff] [review]
disable gtk2 plugins, v2
Review of attachment 8341721 [details] [diff] [review]:
-----------------------------------------------------------------
::: dom/plugins/base/nsPluginsDirUnix.cpp
@@ +333,5 @@
> + * The gtk_major_version symbol is only in gtk2 library. */
> + if(PR_FindSymbol(pLibrary, "gtk_major_version")) {
> + return NS_ERROR_FAILURE;
> + }
> +#endif
Yes, but space between 'if' and '('.
Did you test this, and it works as you want it to? How about with a pluginreg.dat file created by a gtk2 browser?
Attachment #8341721 -
Flags: review?(joshmoz) → review+
Comment 7•11 years ago
|
||
I doubt this actually works.
Assignee | ||
Comment 8•11 years ago
|
||
(In reply to Josh Aas (Mozilla Corporation) from comment #6)
> Comment on attachment 8341721 [details] [diff] [review]
> disable gtk2 plugins, v2
>
> Review of attachment 8341721 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> ::: dom/plugins/base/nsPluginsDirUnix.cpp
> @@ +333,5 @@
> > + * The gtk_major_version symbol is only in gtk2 library. */
> > + if(PR_FindSymbol(pLibrary, "gtk_major_version")) {
> > + return NS_ERROR_FAILURE;
> > + }
> > +#endif
>
> Yes, but space between 'if' and '('.
>
> Did you test this, and it works as you want it to? How about with a
> pluginreg.dat file created by a gtk2 browser?
The PR_FindSymbol() check works, but GetPluginInfo() is called only when the plugin cache is updated for new plugins.
OTOH If the check is in LoadPlugin() I have to close the library when the check fails, right?
Comment 9•8 years ago
|
||
Resolving old bugs which are likely not relevant any more, since NPAPI plugins are deprecated.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INCOMPLETE
Updated•3 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•