Index: gc_lang/fr/webext/content_scripts/comunicate.js ================================================================== --- gc_lang/fr/webext/content_scripts/comunicate.js +++ gc_lang/fr/webext/content_scripts/comunicate.js @@ -3,11 +3,11 @@ console.log('[Iframe] Loaded'); /* Worker (separate thread to avoid freezing Firefox) */ -function createSharedworker (sPath) { +function createSharedWorker (sPath) { try { xGCEWorker = new SharedWorker(sPath+"gce_sharedworker.js"); } catch (e) { console.error(e); @@ -15,69 +15,56 @@ xGCEWorker.onerror = function(e) { console.log('There is an error with your worker!'); console.log(typeof(e)); console.log(e); - for (let sParam in e) { - console.log(sParam); - console.log(e.sParam); - } } xGCEWorker.port.onmessage = function (e) { // https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent try { - //On retransmet directement le message à la page + // On retransmet directement le message à la page console.log("[Iframe] send from Message Worker"); - window.postMessage({SharedWorker: e.data}, sPath ); + window.postMessage({SharedWorker: e.data}, sPath); } catch (e) { console.error(e); } }; console.log("[Iframe] [worker]"); console.log(xGCEWorker); - //xGCEWorker.port.start(); //console.log("Content script [port started]"); - //xGCEWorker.port.postMessage(["init", {sExtensionPath: browser.extension.getURL("."), sOptions: "", sContext: "Firefox"}]); - - console.log("[Iframe] [worker initialzed]"); - + xGCEWorker.port.postMessage(["init", {sExtensionPath: sPath, sOptions: "", sContext: "Firefox"}]); //xGCEWorker.port.postMessage(["parse", {sText: "Vas... J’en aie mare...", sCountry: "FR", bDebug: false, bContext: false}]); //xGCEWorker.port.postMessage(["parseAndSpellcheck", {sText: oRequest.sText, sCountry: "FR", bDebug: false, bContext: false}]); //xGCEWorker.port.postMessage(["getListOfTokens", {sText: oRequest.sText}]); //xGCEWorker.port.postMessage(["textToTest", {sText: oRequest.sText, sCountry: "FR", bDebug: false, bContext: false}]); //xGCEWorker.port.postMessage(["fullTests"]); } -var savePathExtension = ''; -var savePathOrigine = ''; +var sPathOrigin = ''; console.log('[Iframe] Set receivedMessageWeb'); function receivedMessageWeb (oEvent) { - //Pour être sure que ca viens bien de notre iframe ;) - if ( !xGCEWorker && typeof oEvent.data.sPath !== "undefined" && typeof oEvent.data.sPage !== "undefined" && oEvent.data.sPage === oEvent.origin ){ + // Pour être sûr que ça vient bien de notre iframe ;) + if (!xGCEWorker && typeof oEvent.data.sPath !== "undefined" && typeof oEvent.data.sPage !== "undefined" && oEvent.data.sPage === oEvent.origin) { console.log('[Iframe] Create the Sharedworker ', oEvent.origin); - savePathExtension = oEvent.data.sPath; - savePathOrigine = oEvent.origin; - //On créer le Shraredworker - createSharedworker(savePathExtension); - //On initialise le Shraredworker - xGCEWorker.port.postMessage(["init", {sExtensionPath: savePathExtension, sOptions: "", sContext: "Firefox"}]); - } else if ( xGCEWorker && savePathOrigine === oEvent.origin && typeof oEvent.data.SharedWorker === "undefined") { - console.log('[Iframe] received (no Sharedworker):', oEvent, savePathExtension, savePathOrigine, oEvent.origin); - //Les messages reçus maintenant, on un Sharedworker fonctionnel - //On transmet au Sharedworker uniquement si ça viens bien de la page web et on s'assure que c'est pas une réponse du Sharedworker - //TODO: Fodrait établir un protocol de communication afin qu'on ne traite vraiment que les messages a transmettre util ;) - console.log('[Iframe] exec command with Sharedworker'); + sPathOrigin = oEvent.origin; + createSharedWorker(oEvent.data.sPath); + } else if (xGCEWorker && sPathOrigin === oEvent.origin && typeof oEvent.data.SharedWorker === "undefined") { + console.log('[Iframe] received (no SharedWorker):', oEvent, oEvent.origin); + // Les messages reçus maintenant ont un SharedWorker fonctionnel + // On transmet au SharedWorker uniquement si ça vient de la page web et on s’assure que ce n’est pas une réponse du SharedWorker. + // TODO: Établir un protocole de communication afin de traiter uniquement les messages utiles + console.log('[Iframe] exec command with SharedWorker'); xGCEWorker.port.postMessage(oEvent.data); console.log('[Iframe] end send message to worker'); } } -window.addEventListener("message", receivedMessageWeb, false); +window.addEventListener("message", receivedMessageWeb, false); console.log('[Iframe] END'); Index: gc_lang/fr/webext/content_scripts/modify_page.js ================================================================== --- gc_lang/fr/webext/content_scripts/modify_page.js +++ gc_lang/fr/webext/content_scripts/modify_page.js @@ -10,66 +10,70 @@ console.log("Content script [start]"); /* * Pour effectuer différent action sur la page en cours */ -function receivedMessageIframe (oEvent) { - if ( typeof oEvent.data.SharedWorker !== "undefined" ) { - //C'est ici que les action devront être effectuées +function receivedMessageFromIframe (oEvent) { + if (typeof oEvent.data.SharedWorker !== "undefined") { console.log('[Web] received (from iframe (Sharedworker)):', oEvent); + let [sCommand, answer] = oEvent.data.SharedWorker; + console.log(sCommand); + switch (sCommand) { + case "grammar_errors": + console.log(answer.aGrammErr); + for (let oErr of answer.aGrammErr) { + console.log(oErr); + } + break; + } } } /* * Creation d'une iframe pour communiquer entre la page visitée et le Shareworker */ var sFrameID = browser.extension.getURL("").split('/')[2]; -var iframe = document.createElement('iframe'); -iframe.id = sFrameID; -iframe.src = browser.extension.getURL('content_scripts/comunicate.html'); -iframe.hidden = true; -iframe.onload= function() { +var xIframe = document.createElement('iframe'); +xIframe.id = sFrameID; +xIframe.src = browser.extension.getURL('content_scripts/comunicate.html'); +xIframe.hidden = true; +xIframe.onload= function () { console.log('[Web] Init protocol de communication'); - //var iframeContent = iframe.contentWindow; - var iframeContent = document.getElementById(sFrameID).contentWindow; - iframeContent.addEventListener("message", receivedMessageIframe, false); - + //var xFrameContent = xIframe.contentWindow; + var xFrameContent = document.getElementById(sFrameID).contentWindow; + xFrameContent.addEventListener("message", receivedMessageFromIframe, false); try { //La frame est chargé on envoie l'initialisation du Sharedworker console.log('[Web] Initialise the worker :s'); console.log('[Web] Domaine ext: '+browser.extension.getURL("")); - iframeContent.postMessage({sPath:browser.extension.getURL(""), sPage:location.origin.trim("/")}, browser.extension.getURL("") ); + xFrameContent.postMessage({sPath: browser.extension.getURL(""), sPage: location.origin.trim("/")}, browser.extension.getURL("")); - //Un petit test pour débogage ;) console.log('[Web] Test the worker :s'); - iframeContent.postMessage(["parse", {sText: "Vas... J’en aie mare...", sCountry: "FR", bDebug: false, bContext: false}], browser.extension.getURL("")); + xFrameContent.postMessage(["parse", {sText: "Vas... J’en aie mare...", sCountry: "FR", bDebug: false, bContext: false}], browser.extension.getURL("")); } catch (e) { console.error(e); } } -document.body.appendChild(iframe); +document.body.appendChild(xIframe); + -/* -* Bidoule pour les les images du module et les intégrès sur la page -*/ -function loadImage(sContennaireID, sImagePath){ +function loadImage (sContainerClass, sImagePath) { let xRequest; xRequest = new XMLHttpRequest(); xRequest.open('GET', browser.extension.getURL("")+sImagePath, false); xRequest.responseType = "arraybuffer"; xRequest.send(); - let blobTxt = new Blob([xRequest.response], {type: 'image/png'}); let img = document.createElement('img'); img.src = (URL || webkitURL).createObjectURL(blobTxt); - - Array.filter( document.getElementsByClassName(sContennaireID), function(oElment){ - oElment.appendChild(img); + Array.filter(document.getElementsByClassName(sContainerClass), function (oElem) { + oElem.appendChild(img); }); } + console.log('[Web] La suite des initialisations'); let nWrapper = 0; let xConjPanel = null; @@ -93,11 +97,10 @@ nWrapper += 1; xParentElement.insertBefore(xWrapper, xTextArea); xWrapper.appendChild(xTextArea); // move textarea in wrapper let xToolbar = createWrapperToolbar(xTextArea); xWrapper.appendChild(xToolbar); - loadImage("GrammalecteTitle", "img/logo-16.png"); } catch (e) { showError(e); }