Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation de thread

dans un extension firefox

    22 octobre 2008 à 20:13:45

    Bonjour,
    je suis en train de développer un extension firefox qui permet d'utiliser l'identification biométrique (par empreinte digital) sous Linux. J'ai codé mon component XPXOM qui permet de faire le lien entre javascript et thinkfinger. Mon problème: en javascript j'ai la fonction thinkfinger.verify() qui retourne si l'identification par empreinte est bonne ou non, mais cette fonction ne s'arrête que lorsque l'utilisateur a glisser son doigt ce qui fait que le reste de firefox reste bloquer. Auriez vous une solution quelconque, autant dans le component (C++) que dans l'extension (JavaScript).
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2008 à 11:48:44

      dis donc c'est vachement pointu ton extension! :o
      par défaut le javascript "bloque" le navigateur tant qu'il s'exécute. les rares exceptions sont des fonctions asynchrones. en particulier pour l'ajax le xmlhttprequest qui peut être exécuté en synchrone ou asynchrone.
      Il y a aussi cette fonction spéciale: setTimeOut qui peut déclencher une action différée (ou pas) sans bloquer l'execution du script courant.
      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2008 à 12:16:21

        Je ne connais pas ton extension ni comment elle est faite, mais tu pourrais utiliser un callback de fonction.
        Par exemple, tu lances la vérification avec:
        thinkfinger.verify('ma_fonction_callback');
        

        apres avoir déclaré
        function ma_fonction_callback(verifState){
            if(verifState)
                alert('authentification réussie');
            else
                alert('l\'utilisateur n'a pas pu être authentifié');
        }
        

        Ca serait possible uniquement si ton extension peut stocker le nom de la fonction à appeler puis arreter la fonction javascript, et si elle peut continuer à tourner sans bloquer le navigateur et appeler une fonction javascript.
        En fait, le but est de déplacer la boucle d'attente du moteur javascript vers le moteur de ton extension.

        En quoi est codée l'extension?
        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2008 à 18:51:16

          l'extension est codé en Javascript, mais le component (l'objet avec la fonction verify()) est codé en C++. Je ne crois pas qu'il possible de faire un callback JavaScript à partir du code C++. Je vais feuilleter la doc de IDL.
          • Partager sur Facebook
          • Partager sur Twitter
            25 octobre 2008 à 9:33:53

            Une autre solution éventuelle :
            Tu lances la vérification avec une premiere fonction, mais qui ne garde pas la main, c'est à dire qu'elle sert juste à indiquer à l'extension c++ qu'elle doit lire sur le périphérique de capture, et tu fais une seconde fonction javascript qui pourrait renvoyer 3 valeurs : une indiquant que la vérification n'est pas encore faite, une pour indiquer que l'empreinte lue n'a pas été approuvée, et une indiquant que l'empreinte lue est approuvée.
            Dans le code javascript, tu lances d'abord la premiere fonction, puis automatise le test de la seconde avec setInterval par exemple.
            • Partager sur Facebook
            • Partager sur Twitter
              25 octobre 2008 à 18:51:36

              C'est justement ce que j'ai fait :p et ça marche. Je crois que je vais faire un tutoriel sur comment coder des extension et des components. Parce que la documentation à jour est dur à trouver et pas toujours clair. Si certains d'entre vous veulent m'aider, envoyer moi un mp.
              • Partager sur Facebook
              • Partager sur Twitter

              Utilisation de thread

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown