Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


There is a little-known(?) feature in LO that allows to plug browser plugins based on the NPAPI standard to display (multimedia) content inside LO documents. In Writer at least, it is available via "Insert - Object - Plug-in...".

The implementation is in extensions/source/plugin/ (which has platform-specific branches for aqua, unx, and win) and np_sdk/. And it appears to be horribly broken, see below for details.

Given that "standard" multimedia content is already covered via "Insert - Movie and Sound..." (whose implementation is completely unrelated), the only relevant remaining use-case might be Flash content. But given that I at least was unable to get even that working (see below), I wonder whether this feature is actually used/missed by anybody, or whether we should just drop it completely from our codebase? (I vaguely remember that in the distant past it even worked to display Java applets via this plugin interface, by plugging a JRE's browser plugin. Given my findings below, I don't now it would even be worth to try to test that today.)

Opinions anyone?


The details:

* I tried all this on Fedora 17 x86-64.

* Running soffice with SAL_LOG=+WARN+INFO.extensions.plugin gives some useful output now, at least on Linux.

* With totem-mozplugin-3.4.3-1.fc17.x86_64 installed, Firefox is able to open e.g., .ogg audio files or .flv videos.

** Trying the same with LO Writer's "Insert - Object - Plug-in..." fails (just specifying the .ogg/.flv file pathname, leaving "Options" blank). The SAL_INFO output indicates that libtotem-clone-plugin.so is loaded, but calling its NP_Initialize returns 3 (NPERR_INVALID_FUNCTABLE_ERROR) because the NPNetscapeFuncs struct created in extensions/source/plugin/unx/npnapi.cxx (based on an outdated definition of NPNetscapeFuncs in np_sdk/mozsrc/npupp.h) is too short (i.e., misses functions added by later NPAPI revisions and expected by the given libtotem-clone-plugin.so).

** In principle, it should work to update LO's NPAPI host interface to a recent NPAPI revision. I tried to make extensions/source/plugin/unx/ use contemporary xulrunner-devel-16.0.2-1.fc17.x86_64 NPAPI headers from --with-system-npapi-headers instead of the hack that is np_sdk/mozsrc/npupp.h, but quickly gave up: For one, that npupp.h hack is a wild mix of platform-specifics, OJI (Open JVM Integration) support, etc., so replacing it with a plain npapi.h include seems far from trivial. For another, this would require implementations of those additional functions in the NPNetscapeFuncs struct (for some it might do to add dummy implementations, in the hope that the relevant plugins do not call them anyway).

* With the above rationale ("Insert - Movie and Sound..."), the totem plugin is likely not that relevant, anyway, so next I tried to get flash-plugin-11.2.202.251-release.x86_64 (from <http://linuxdownload.adobe.com/linux/x86_64/>) working. In Firefox, it is able to open .swf files (e.g., garth.swf from <http://www.britarch.ac.uk/caf/wikka.php?wakka=TestSWF>).

** Trying the same with LO fails again. This time, the SAL_INFO output indicates that libflashplayer.so is loaded and that calling its NP_Initialize returns 0 (i.e., the plugin is apparently satisfied with our dated NPAPI implementation, hurrah). However, libflashplayer.so (offloaded into a pluginapp.bin process of its own) crashes shortly after in a call to aPluginFuncs.newstream from extensions/source/plugin/unx/npnapi.cxx, for undebuggable reasons (as the plugin comes without source code).

Stephan

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.