diff options
-rw-r--r-- | src/bg/defaults.js | 60 | ||||
-rw-r--r-- | src/bg/main.js | 30 | ||||
-rw-r--r-- | src/lib/Messages.js | 14 | ||||
-rw-r--r-- | src/manifest.json | 5 |
4 files changed, 59 insertions, 50 deletions
diff --git a/src/bg/defaults.js b/src/bg/defaults.js index 4d071b4..7170743 100644 --- a/src/bg/defaults.js +++ b/src/bg/defaults.js @@ -1,36 +1,38 @@ 'use strict'; -ns.defaults = (async () => { - let defaults = { - local: { - debug: false, - showCtxMenuItem: true, - showCountBadge: true, - showFullAddresses: false, - }, - sync: { - "global": false, - "xss": true, - "clearclick": true - } - }; - let defaultsClone = JSON.parse(JSON.stringify(defaults)); +var Defaults = { + async init() { + let defaults = { + local: { + debug: false, + showCtxMenuItem: true, + showCountBadge: true, + showFullAddresses: false, + }, + sync: { + "global": false, + "xss": true, + "clearclick": true + } + }; + let defaultsClone = JSON.parse(JSON.stringify(defaults)); - for (let [k, v] of Object.entries(defaults)) { - let store = await Storage.get(k, k); - if (k in store) { - Object.assign(v, store[k]); + for (let [k, v] of Object.entries(defaults)) { + let store = await Storage.get(k, k); + if (k in store) { + Object.assign(v, store[k]); + } + v.storage = k; } - v.storage = k; - } - Object.assign(ns, defaults); + Object.assign(ns, defaults); - // dynamic settings - if (!ns.local.uuid) { - ns.local.uuid = uuid(); - await ns.save(ns.local); - } + // dynamic settings + if (!ns.local.uuid) { + ns.local.uuid = uuid(); + await ns.save(ns.local); + } - return ns.defaults = defaultsClone; -})(); + return ns.defaults = defaultsClone; + } +}; diff --git a/src/bg/main.js b/src/bg/main.js index 72ef5de..58e7aef 100644 --- a/src/bg/main.js +++ b/src/bg/main.js @@ -23,8 +23,7 @@ } async function init() { - await include("/bg/defaults.js"); - await ns.defaults; + await Defaults.init(); let policyData = (await Storage.get("sync", "policy")).policy; if (policyData && policyData.DEFAULT) { @@ -35,16 +34,22 @@ ns.policy = await Legacy.createOrMigratePolicy(); ns.savePolicy(); } - - - - await include("/bg/RequestGuard.js"); + await RequestGuard.start(); await XSS.start(); // we must start it anyway to initialize sub-objects if (!ns.sync.xss) { XSS.stop(); } - Commands.install(); + + Messages.addHandler(messageHandler); + + try { + await Messages.send("started"); + } catch (e) { + // no embedder to answer us + } + log("STARTED"); + }; let Commands = { @@ -65,8 +70,6 @@ togglePermissions() {}, install() { - - if ("command" in browser) { // keyboard shortcuts browser.commands.onCommand.addListener(cmd => { @@ -182,13 +185,8 @@ deferWebTraffic(init(), async () => { - - await include("/bg/Settings.js"); - Messages.addHandler(messageHandler); - - await Messages.send("started"); - log("STARTED"); - + Commands.install(); + this.devMode = (await browser.management.getSelf()).installType === "development"; if (this.local.debug) { if (this.devMode) { diff --git a/src/lib/Messages.js b/src/lib/Messages.js index a58598a..50639ef 100644 --- a/src/lib/Messages.js +++ b/src/lib/Messages.js @@ -1,17 +1,23 @@ "use strict"; { let handlers = new Set(); - - let forever = new Promise(resolve => {}); + let dispatch = async (msg, sender) => { let {_messageName} = msg; + let answers = []; for (let h of handlers) { let f = h[_messageName]; if (typeof f === "function") { - return await f(msg, sender); + answers.push(f(msg, sender)); } } - await forever; + if (answers.length) { + return await ( + answers.length === 1 ? answers.pop(): Promise.all(answers) + ); + } + console.log("Answering %s", _messageName); + return undefined; }; var Messages = { diff --git a/src/manifest.json b/src/manifest.json index 7a78bef..4351a1c 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -8,7 +8,7 @@ "strict_min_version": "59.0" } }, - "version": "10.1.9rc1", + "version": "10.1.9rc3", "description": "__MSG_Description__", "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'none'", @@ -54,6 +54,9 @@ "bg/ReportingCSP.js", "bg/deferWebTraffic.js", "bg/ChildPolicies.js", + "bg/Defaults.js", + "bg/RequestGuard.js", + "bg/Settings.js", "bg/main.js" ] }, |