Reordered startup sequence to be more friendly with embedders like the Tor Browser.
This commit is contained in:
parent
5bfba8a40f
commit
e8716657e4
|
@ -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
|
||||
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]);
|
||||
}
|
||||
v.storage = k;
|
||||
}
|
||||
};
|
||||
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]);
|
||||
Object.assign(ns, defaults);
|
||||
|
||||
// dynamic settings
|
||||
if (!ns.local.uuid) {
|
||||
ns.local.uuid = uuid();
|
||||
await ns.save(ns.local);
|
||||
}
|
||||
v.storage = k;
|
||||
|
||||
return ns.defaults = defaultsClone;
|
||||
}
|
||||
|
||||
Object.assign(ns, defaults);
|
||||
|
||||
// dynamic settings
|
||||
if (!ns.local.uuid) {
|
||||
ns.local.uuid = uuid();
|
||||
await ns.save(ns.local);
|
||||
}
|
||||
|
||||
return ns.defaults = defaultsClone;
|
||||
})();
|
||||
};
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue