Index: gc_lang/fr/webext/background.js ================================================================== --- gc_lang/fr/webext/background.js +++ gc_lang/fr/webext/background.js @@ -56,13 +56,10 @@ case "getOptions": case "getDefaultOptions": case "resetOptions": // send result to panel storeGCOptions(result); - if (bChrome) { - e.data.result = helpers.mapToObject(e.data.result); - } browser.runtime.sendMessage(e.data); break; case "setOptions": case "setOption": storeGCOptions(result); @@ -73,12 +70,13 @@ default: console.log("[background] Unknown command: " + sActionDone); console.log(e.data); } } - catch (e) { - showError(e); + catch (error) { + showError(error); + console.log(e.data); } }; function initUIOptions (dSavedOptions) { if (!dSavedOptions.hasOwnProperty("ui_options")) { @@ -91,17 +89,13 @@ function initGrammarChecker (dSavedOptions) { try { let dOptions = (dSavedOptions.hasOwnProperty("gc_options")) ? dSavedOptions.gc_options : null; if (dOptions !== null && Object.getOwnPropertyNames(dOptions).length == 0) { - console.log("# Error: the saved options was an empty object"); + console.log("# Error: the saved options was an empty object."); dOptions = null; } - if (bChrome) { - // JS crap again. Chrome can’t store Map object. - dOptions = helpers.objectToMap(dOptions); - } xGCEWorker.postMessage({ sCommand: "init", dParam: {sExtensionPath: browser.extension.getURL(""), dOptions: dOptions, sContext: "Firefox"}, dInfo: {} }); @@ -325,12 +319,11 @@ /* Actions */ function storeGCOptions (dOptions) { - if (bChrome) { - // JS crap again. Chrome can’t store Map object. + if (dOptions instanceof Map) { dOptions = helpers.mapToObject(dOptions); } browser.storage.local.set({"gc_options": dOptions}); } Index: gc_lang/fr/webext/gce_worker.js ================================================================== --- gc_lang/fr/webext/gce_worker.js +++ gc_lang/fr/webext/gce_worker.js @@ -169,19 +169,23 @@ oTest = new TestGrammarChecking(gc_engine, sExtensionPath+"/grammalecte/fr/tests_data.json"); oTokenizer = new Tokenizer("fr"); oLocution = helpers.loadFile(sExtensionPath + "/grammalecte/fr/locutions_data.json"); oLxg = new Lexicographe(oSpellChecker, oTokenizer, oLocution); if (dOptions !== null) { + if (!(dOptions instanceof Map)) { + dOptions = helpers.objectToMap(dOptions); + } gc_engine.setOptions(dOptions); } //tests(); bInitDone = true; } else { console.log("[Worker] Already initialized…") } // we always retrieve options from the gc_engine, for setOptions filters obsolete options - postMessage(createResponse("init", gc_engine.getOptions(), dInfo, true)); + dOptions = helpers.mapToObject(gc_engine.getOptions()); + postMessage(createResponse("init", dOptions, dInfo, true)); } catch (e) { helpers.logerror(e); postMessage(createResponse("init", createErrorResult(e, "init failed"), dInfo, true, true)); } @@ -215,33 +219,41 @@ let aSpellErr = oSpellChecker.parseParagraph(sParagraph); postMessage(createResponse("parseAndSpellcheck1", {sParagraph: sParagraph, aGrammErr: aGrammErr, aSpellErr: aSpellErr}, dInfo, true)); } function getOptions (dInfo={}) { - postMessage(createResponse("getOptions", gc_engine.getOptions(), dInfo, true)); + let dOptions = helpers.mapToObject(gc_engine.getOptions()); + postMessage(createResponse("getOptions", dOptions, dInfo, true)); } function getDefaultOptions (dInfo={}) { - postMessage(createResponse("getDefaultOptions", gc_engine.getDefaultOptions(), dInfo, true)); + let dOptions = helpers.mapToObject(gc_engine.getDefaultOptions()); + postMessage(createResponse("getDefaultOptions", dOptions, dInfo, true)); } function setOptions (dOptions, dInfo={}) { + if (!(dOptions instanceof Map)) { + dOptions = helpers.objectToMap(dOptions); + } gc_engine.setOptions(dOptions); - postMessage(createResponse("setOptions", gc_engine.getOptions(), dInfo, true)); + dOptions = helpers.mapToObject(gc_engine.getOptions()); + postMessage(createResponse("setOptions", dOptions, dInfo, true)); } function setOption (sOptName, bValue, dInfo={}) { console.log(sOptName+": "+bValue); if (sOptName) { gc_engine.setOption(sOptName, bValue); - postMessage(createResponse("setOption", gc_engine.getOptions(), dInfo, true)); + let dOptions = helpers.mapToObject(gc_engine.getOptions()); + postMessage(createResponse("setOption", dOptions, dInfo, true)); } } function resetOptions (dInfo={}) { gc_engine.resetOptions(); - postMessage(createResponse("resetOptions", gc_engine.getOptions(), dInfo, true)); + let dOptions = helpers.mapToObject(gc_engine.getOptions()); + postMessage(createResponse("resetOptions", dOptions, dInfo, true)); } function tests () { console.log(conj.getConj("devenir", ":E", ":2s")); console.log(mfsp.getMasForm("emmerdeuse", true)); Index: gc_lang/fr/webext/panel/main.js ================================================================== --- gc_lang/fr/webext/panel/main.js +++ gc_lang/fr/webext/panel/main.js @@ -209,23 +209,18 @@ if (dSavedOptions.hasOwnProperty("gc_options")) { displayGCOptions(dSavedOptions.gc_options); } } -function displayGCOptions (dOptions) { +function displayGCOptions (oOptions) { try { - // dOptions is supposed to be a Map - if (bChrome) { - // JS crap again. Chrome can’t store/send Map object. - dOptions = helpers.objectToMap(dOptions); - } - for (let [sOpt, bVal] of dOptions) { - if (document.getElementById("option_"+sOpt)) { - document.getElementById("option_"+sOpt).checked = bVal; + for (let sParam in oOptions) { + if (document.getElementById("option_"+sParam)) { + document.getElementById("option_"+sParam).checked = oOptions[sParam]; } } } catch (e) { showError(e); - console.log(dOptions); + console.log(oOptions); } }