Gestion des greffons en mode windowless. Vous avez sans doute remarqué que les greffons s'exécutaient dans une fenêtre séparée, mais intégrée dans la hiérarchie de fenêtres du navigateur. De ce fait, les menus déroulants pouvaient parfois s'afficher en dessous de la fenêtre du greffon. Eh bien, Firefox 3 autorise à présent les greffons qui le supportent à dessiner dans une pixmap. On appelle cela le mode windowless. En pratique, il s'agit typiquement de Flash 10 et Gnash un peu aussi maintenant. nspluginwrapper s'aligne sur le support du navigateur.
Greffons natifs. Vous avez sans doute entendu parler de Google Chrome et de son architecture multi-processus et de confinement. L'idée n'est pas neuve, et Red Hat l'implémentait déjà depuis quelques temps avec l'aide de nspluginwrapper. Vu que nspluginwrapper est un processus indépendant, l'intérêt est triple :
- Si le greffon se vautre (crash), il n'emporte pas tout le navigateur avec lui. Ainsi, le navigateur survit et il suffit de recharger la page incriminée. Pour l'instant, le greffon n'est pas rejoué, i.e. il ne redémarre pas tout seul, il faut que ce soit une action motivée par l'utilisateur.
- Si le greffon est un goinfre de mémoire mais qu'il la digère mal, alors les fuites de mémoire sont limitées à ce processus, et non au niveau du navigateur qui vit plus longtemps. Rappel : s'il n'existe plus aucune instance d'un greffon donné, alors il est dé-initialisé. Cela correspond à l'arrêt normal du processus nspluginwrapper, et ainsi de toute la mémoire non-partagée qui y était créée.
- Mesures de sécurité. Il est possible d'autoriser le greffon à n'accéder qu'à certaines ressources. e.g. connexion aux ports HTTP uniquement, interdiction de lire certains fichiers dits sensibles comme /etc/shadow, etc. Tout ceci se contrôle avec des règles SELinux, ou RSBAC. nspluginwrapper ne fournit aucune politique de sécurité, cela échoit au distributeur.
Lecteur auto-suffisant de greffons. En fait, il s'agit d'une petite application (nspluginplayer) qui permet d'exécuter des greffons sans navigateur web. C'est assez utile si l'on veut par exemple exécuter une pauvre animation Flash sur un stand,... ou de déboguer un greffon. Bon, ça ne supporte pas l'intégralité de NPAPI mais c'est tout à fait suffisant pour exécuter Flash Player et le greffon d'Adobe Reader. La syntaxe de nspluginplayer peut sembler compliquée, mais il suffit en fait de lui fournir les arguments de la balise embed.
Par exemple, pour jouer à Magic Paint, on lancera la commande:
$ nspluginplayer src=<a href="http://magic.pen.fizzlebot.com/magic-pen.swf">http://magic.pen.fizzlebot.com/magic-pen.swf</a> width=800 height=520
Prise en charge de nouvelles architectures et systèmes. nspluginwrapper tourne maintenant sous OpenSolaris 2008.xx. Transitive Technologies l'utilise notamment pour exécuter le greffon Adobe Reader, qui n'existe que pour Solaris/SPARC. Encore plus intéressant, ils utilisent nspluginwrapper pour exécuter le greffon Flash 9 Linux/i386 sur Linux/ARM.
Aller plus loin
- Page du projet (47 clics)
- Annonce détaillée (10 clics)
- Migration transparente d'applications vers des appareils mobiles sous Linux (5 clics)
# Merci
Posté par Zorro (site web personnel) . Évalué à 4.
[^] # Re: Merci
Posté par B16F4RV4RD1N . Évalué à 3.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
# mem leak
Posté par fcartegnie . Évalué à 2.
[^] # Re: mem leak
Posté par Gwenole Beauchesne . Évalué à 9.
Si tu suspectes encore des fuites de mémoire dans la version 1.2.0, il est également possible de ne lancer valgrind que sur nspluginwrapper, et donc les plug-ins, i.e. on ne s'embête pas à valgrind'er sur tout le browser. Pour ce faire, démarre juste le browser en le préfixant de la variable NPW_USE_VALGRIND=yes.
Par exemple:
$ NPW_USE_VALGRIND=yes NPW_VALGRIND_OPTIONS="--leak-check=full" firefox file:///path/to/file.pdf 2>&1|tee l
Ca fait un peu fonctionnalité secrète mais a priori ce n'était utile que pour moi. ;-) Ah oui, si tu vois une tripotée de variables utilisées avant d'être initialisées, t'en fais pas, c'est "normal" pour les plug-ins d'Adobe, ou bien est-ce valgrind qui ne détecte pas bien ces cas?
# et java
Posté par M . Évalué à 2.
[^] # Re: et java
Posté par Gwenole Beauchesne . Évalué à 3.
# Des plugins i386 sur un i386
Posté par baptiste1ch . Évalué à 1.
Vu les avantages de la description, notament pour la gestion des crashs et de la consommation.
Merci.
[^] # Re: Des plugins i386 sur un i386
Posté par Pascal Terjan (site web personnel) . Évalué à 6.
# nspluginwrapper 1.2.2
Posté par Gwenole Beauchesne . Évalué à 3.
* Correction du support du plug-in VLC (0.8.6)
* Correction d'un problème de déallocation mémoire dans NPN_GetStringIdentifiers() pouvant causer un crash du navigateur
* Correction d'un cas d'erreur lors de la création de flux dans le lecteur autonome
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.