Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2

# XPCOM et plugin

Envoyé par : guillaume

Date : 23/04/2007 15:14

Pour bien comprendre les principes, j'ai plusieurs questions :

comment se déroule l'inscription d'un plugin auprès de Xulrunner ?

Est-ce qu'il suffit de copier notre .so dans le répertoire "plugins" de mon application ? Ou faut-il le copier dans le répertoire "plugins" de Xulrunner ?

Une fois cette copie effectuée, de quelle manière Xulrunner inscrit le plugin contenu dans le .so ?

Faut-il utiliser XPInstall obligatoirement ?

Dernière question à propos du plugin exemple fourni dans /mozilla/modules/plugin/tools/sdk/samples/scriptable/unix : j'ai remarqué dans le code du composant XPCOM (nsScriptablePeer.cpp) permettant l'accès au plugin, la non-utilisation de nsIModule et nsIFactory ? Je croyais que ces interfaces étaient les points d'entrée afin qu'un composant XPCOM soit accédé. J'ai remarqué aussi l'absence de ContractID. Est-ce possible ?

Merci pour vos réponses.

# Re: XPCOM et plugin

Envoyé par : laurentj

Date : 24/04/2007 13:12

Il faut installer le .so dans le repertoire de XulRunner (ou alors dans celui de l'application, mais je ne sais plus si ça fonctionne vraiment), et c'est tout. Suffit de redémarrer l'application pour que le plugin soit pris en compte.

non-utilisation de nsIModule et nsIFactory ? Je croyais que ces interfaces étaient les points d'entrée afin qu'un composant XPCOM soit accédé. J'ai remarqué aussi l'absence de ContractID. Est-ce possible ?

Oui c'est possible. y a pas besoin de module et de factory, dans la mesure où le composant est instancié automatiquement avec le plugin, et dont l'interface est scriptable directement grâce à la déclaration nsIClassInfo. Mais bien sûr le composant n'apparaitra pas dans Components.classes...

# Re: XPCOM et plugin

Envoyé par : guillaume

Date : 24/04/2007 14:24

Merci. Pouvez-vous me donner un exemple à suivre pour m'en inspirer ?

J'essaie de comprendre les samples fournis par mozilla, mais pas une implémentation de plugin suit la même architecture qu'une autre !

Avez-vous un exemple de code simple, svp ? Autre question : que fait-on du .xpt ?

Merci.

# Re: XPCOM et plugin

Envoyé par : David Marteau

Date : 25/04/2007 00:13

Les plugins peuvent aussi bien aller dans le repertoire plugins de xulrunner (mais je le deconseille) que dans le repertoire plugins de l'application.

Le xpt est placé habituellement dans le même repertoire que le plugin proprement dit.

Note : le xpt decrit seulement une interface, il peut être aussi bien placé dans le repertoire components/

# Re: XPCOM et plugin

Envoyé par : guillaume

Date : 25/04/2007 09:48

Merci.

Avez-vous un exemple de code simple dont je pourrais m'inspirer ?

Parce que j'ai toujours des problèmes liés aux samples fournis par mozilla...

D'après www.mozilla.org/projects/plugins/npruntime.html :

Plugins that used to take advantage of being scriptable via LiveConnect in 4.x Netscape browsers lost this possibility in Mozilla (due to the JNI making the Netscape 4.x JRI obsolete). As an answer to this large gap in the Netscape Plugin API, an extension to the API has been developed that will let plugins be scriptable again, independent of Java.

Je pense que les sources de plugins exemples fournis dans le source de mozilla font partie de la 1ère catégorie : les plugins scriptables via LiveConnect et non XPConnect.

Avez-vous un exemple de code utilisant l'API décrite sur www.mozilla.org/projects/plugins/npruntime.html, permettant de rendre un plugin scriptable via XPConnect ?

# Re: XPCOM et plugin

Envoyé par : David Marteau

Date : 25/04/2007 10:46

Example de plugin xpconnect dans les sources mozilla :

modules/plugin/samples/simple

et

modules/plugin/tools/sdk/samples/scriptable

Pour avoir utilisé l'exemple pour windows, il ne m'a posé aucun problèmes. Il compile d'ailleurs très bien avec le sdk (pas besoin d'être dans le tronc)

# Re: XPCOM et plugin

Envoyé par : guillaume

Date : 25/04/2007 11:18

J'ai déjà essayé ces 2 là !

(petite précision : je suis sous Ubuntu)

Le problème avec modules/plugin/samples/simple est qu'il ne trouve pas gdksuperwin.h et gtkmozbox.h lors de la compilation. QUelle bibliothèque faut-il installer pour les avoir ?

En ce qui concerne le 2ème (modules/plugin/tools/sdk/samples/scriptable), c'est justement celui-là qui me donne tant de fil à retordre :

je le compile sans problème (en créant un dossier dans "extensions", en rédigeant comme il faut le Makefile.in et en compilant à la source de l'arbre mozilla).

J'ai aussi d'ailleurs compilé au préalable les fichiers np_entry.cpp, npp_gate.cpp et npn_gate.cpp dans une bibliothèque libplugingate_s.a, que j'ai ensuite copié dans dist/lib. Grâce à cela, la compilation se passe sans problème.

J'obtiens mon .so et mon .xpt. Je les copie dans le répertoire "plugins" de mon application Xulrunner : mon plugin n'est pas détécté. De même si je le copie dans le répertoire de .mozilla/plugins, l'appel à "about:plugins" me montre que le browser ne detecte pas mon plugin.

D'où peut venir ce problème ?

D'après la citation de www.mozilla.org/projects/plugins/npruntime.html que je vous ai écrite, il est expliqué que, pour rendre un plugin scriptable via XPConnect, il FAUT utiliser l'extension de npapi, à savoir npruntime. Ceci immplique l'utilisation, par exemple de type NPObject et NPClass dans l'implémentation de notre plugin, ce qui n'est pas le cas dans les 2 exemples que vous me proposez.

Comment avez-vous fait pour que votre plugin soit détecté ? J'aimerais beaucoup savoir car je ne vous cache pas que ça fait des jours que je bloque là-dessus !

# Re: XPCOM et plugin

Envoyé par : David Marteau

Date : 25/04/2007 12:14

Désolé mais je n'ai utilisé les plugins que sous Windows : l'enregistrement se fait si le plugin declare une association avec un type mime. Pour Windows, cela se fait en declarant un champ particulier dans la partie 'resource' de la DLL.

Sous Linux, il faut renvoyer le type mime associé via NPP_GetMIMEDescription

# Re: XPCOM et plugin

Envoyé par : guillaume

Date : 25/04/2007 15:03

Je sais que c'est NPP_GetMIMEDescription qui sert à renvoyer le type MIME associé à mon plugin.

Mais c'est comme si le browser n'accédait pas à cette méthode. J'ai mis un printf("Appel de NPP_GetMIMEDescription") dans l'implémentation de la méthode de NPP_GetMIMEDescription.

Mais au lancement de mon application XUL, rien n'apparaît dans la console.

Une idée ?

# Re: XPCOM et plugin

Envoyé par : guillaume

Date : 25/04/2007 18:56

Au fur et à mesure de mes recherches sur la création de plugins, je me rend compte que c'est npruntime qui est utilisé à présent.

Pouvez-vous me conseiller de la doc à ce sujet ?

Aller à la page :  1 2

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.