P4TB-201: Convert from bootstrapped legacy extension to WebExtension Experiment.
parent
7047cbe944
commit
7480252199
@ -0,0 +1,9 @@
|
||||
/* globals browser */
|
||||
|
||||
var init = async () => {
|
||||
var l10n = {};
|
||||
// TODO: Fill in l10n strings.
|
||||
browser.pEp4Tb.addWindowListener(JSON.stringify(l10n));
|
||||
};
|
||||
|
||||
init();
|
@ -1,111 +0,0 @@
|
||||
/* exported install, uninstall, startup, shutdown */
|
||||
var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
var {ExtensionSupport} = ChromeUtils.import("resource:///modules/ExtensionSupport.jsm");
|
||||
|
||||
function loadStylesheets(styleSheets) {
|
||||
// Load stylesheets
|
||||
const styleSheetService = Cc["@mozilla.org/content/style-sheet-service;1"]
|
||||
.getService(Ci.nsIStyleSheetService);
|
||||
for (let i = 0, len = styleSheets.length; i < len; i++) {
|
||||
const styleSheetURI = Services.io.newURI(styleSheets[i]);
|
||||
styleSheetService.loadAndRegisterSheet(styleSheetURI, styleSheetService.AUTHOR_SHEET);
|
||||
}
|
||||
}
|
||||
|
||||
function install() {
|
||||
console.debug("bootstrap.js: Install");
|
||||
}
|
||||
|
||||
function setPrefs(prefBranch) {
|
||||
const defaults = {
|
||||
Bool: {
|
||||
storeAllSecurely: true,
|
||||
warnUnencrypted: false,
|
||||
protectSubjects: true,
|
||||
pEpSync: false,
|
||||
passiveMode: false,
|
||||
forceUpdate: false,
|
||||
},
|
||||
String: {
|
||||
keyFingerprint: "",
|
||||
keyLocation: "",
|
||||
},
|
||||
};
|
||||
iterate(["Bool", "String"], defaults);
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
function iterate(types, defaults) {
|
||||
types.map((type) => {
|
||||
const prefs = defaults[type];
|
||||
if (prefs) {
|
||||
Object.entries(prefs).map(([prefName, prefValue]) => {
|
||||
prefBranch[`set${type}Pref`](prefName, prefValue);
|
||||
});
|
||||
} else {
|
||||
console.log("no type", type, "in defaults", defaults);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function startup(data, reason) {
|
||||
console.debug("bootstrap.js: Startup");
|
||||
|
||||
const styleSheets = ["chrome://pEp4Tb/content/resources/stylesheets/pEp.css"];
|
||||
loadStylesheets(styleSheets);
|
||||
|
||||
// Define default preferences.
|
||||
setPrefs(Services.prefs.getDefaultBranch("extensions.pEp."));
|
||||
|
||||
ExtensionSupport.registerWindowListener(data.id, {
|
||||
chromeURLs: ["chrome://messenger/content/messenger.xul",
|
||||
"chrome://messenger/content/messageWindow.xul",
|
||||
"chrome://messenger/content/messengercompose/messengercompose.xul"],
|
||||
onLoadWindow: paint,
|
||||
onUnloadWindow: unpaint,
|
||||
});
|
||||
}
|
||||
|
||||
function shutdown(data, reason) {
|
||||
console.debug("bootstrap.js: Shutdown");
|
||||
ExtensionSupport.unregisterWindowListener(data.id);
|
||||
}
|
||||
|
||||
function uninstall() {
|
||||
console.debug("bootstrap.js: Uninstall");
|
||||
}
|
||||
|
||||
function paint(win) {
|
||||
console.debug("bootstrap.js: paint()", win.location.href);
|
||||
let script;
|
||||
switch (win.location.href) {
|
||||
case "chrome://messenger/content/messenger.xul":
|
||||
case "chrome://messenger/content/messageWindow.xul":
|
||||
script = "chrome://pEp4Tb/content/pepmsghdrview.js";
|
||||
break;
|
||||
|
||||
case "chrome://messenger/content/messengercompose/messengercompose.xul":
|
||||
script = "chrome://pEp4Tb/content/pepmessengercompose.js";
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
Services.scriptloader.loadSubScript(script, win);
|
||||
}
|
||||
|
||||
function unpaint(win) {
|
||||
console.debug("bootstrap.js: unpaint()", win.location.href);
|
||||
switch (win.location.href) {
|
||||
case "chrome://messenger/content/messenger.xul":
|
||||
case "chrome://messenger/content/messageWindow.xul":
|
||||
win.pEpHdrView.destroy();
|
||||
break;
|
||||
|
||||
case "chrome://messenger/content/messengercompose/messengercompose.xul":
|
||||
win.pEpComposer.destroy();
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
content pEp4Tb content/
|
@ -0,0 +1,139 @@
|
||||
/* global ExtensionCommon */
|
||||
var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
var {ExtensionSupport} = ChromeUtils.import("resource:///modules/ExtensionSupport.jsm");
|
||||
|
||||
const EXTENSION_NAME = "pEp4Tb@pEp.security";
|
||||
|
||||
function loadStylesheets(styleSheets) {
|
||||
// Load stylesheets
|
||||
const styleSheetService = Cc["@mozilla.org/content/style-sheet-service;1"]
|
||||
.getService(Ci.nsIStyleSheetService);
|
||||
for (let i = 0, len = styleSheets.length; i < len; i++) {
|
||||
const styleSheetURI = Services.io.newURI(styleSheets[i]);
|
||||
styleSheetService.loadAndRegisterSheet(styleSheetURI, styleSheetService.AUTHOR_SHEET);
|
||||
}
|
||||
}
|
||||
|
||||
function setPrefs(prefBranch) {
|
||||
const defaults = {
|
||||
Bool: {
|
||||
storeAllSecurely: true,
|
||||
warnUnencrypted: false,
|
||||
protectSubjects: true,
|
||||
pEpSync: false,
|
||||
passiveMode: false,
|
||||
forceUpdate: false,
|
||||
},
|
||||
String: {
|
||||
keyFingerprint: "",
|
||||
keyLocation: "",
|
||||
},
|
||||
};
|
||||
iterate(["Bool", "String"], defaults);
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
function iterate(types, defaults) {
|
||||
types.map((type) => {
|
||||
const prefs = defaults[type];
|
||||
if (prefs) {
|
||||
Object.entries(prefs).map(([prefName, prefValue]) => {
|
||||
prefBranch[`set${type}Pref`](prefName, prefValue);
|
||||
});
|
||||
} else {
|
||||
console.log("no type", type, "in defaults", defaults);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Implements the functions defined in the experiments section of schema.json.
|
||||
// eslint-disable-next-line vars-on-top
|
||||
var pEp4Tb = class extends ExtensionCommon.ExtensionAPI {
|
||||
// Idea from https://searchfox.org/mozilla-central/rev/72e3388f74458d369af4f6cdbaeaacb719523b8c/browser/extensions/formautofill/api.js#95
|
||||
// Investigation by Mark Banner.
|
||||
onStartup() {
|
||||
const aomStartup = Cc["@mozilla.org/addons/addon-manager-startup;1"]
|
||||
.getService(Ci.amIAddonManagerStartup);
|
||||
const manifestURI = Services.io.newURI("manifest.json", null, this.extension.rootURI);
|
||||
this.chromeHandle = aomStartup.registerChrome(manifestURI, [["content", "pEp4Tb", "content/"]]);
|
||||
}
|
||||
|
||||
onShutdown(isAppShutdown) {
|
||||
if (isAppShutdown) return;
|
||||
this.chromeHandle.destruct();
|
||||
this.chromeHandle = null;
|
||||
}
|
||||
|
||||
getAPI(context) {
|
||||
return {
|
||||
pEp4Tb: {
|
||||
addWindowListener(l10n) {
|
||||
console.debug("experiments.js: Startup");
|
||||
|
||||
const styleSheets = ["chrome://pEp4Tb/content/resources/stylesheets/pEp.css"];
|
||||
loadStylesheets(styleSheets);
|
||||
|
||||
// Define default preferences.
|
||||
setPrefs(Services.prefs.getDefaultBranch("extensions.pEp."));
|
||||
|
||||
ExtensionSupport.registerWindowListener(EXTENSION_NAME, {
|
||||
chromeURLs: ["chrome://messenger/content/messenger.xul",
|
||||
"chrome://messenger/content/messageWindow.xul",
|
||||
"chrome://messenger/content/messengercompose/messengercompose.xul",
|
||||
"chrome://messenger/content/messenger.xhtml",
|
||||
"chrome://messenger/content/messageWindow.xhtml",
|
||||
"chrome://messenger/content/messengercompose/messengercompose.xhtml"],
|
||||
onLoadWindow: paint,
|
||||
onUnloadWindow: unpaint,
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
close() {
|
||||
console.debug("experiments.js: close");
|
||||
ExtensionSupport.unregisterWindowListener(EXTENSION_NAME);
|
||||
}
|
||||
};
|
||||
|
||||
function paint(win) {
|
||||
console.debug("experiments.js: paint()", win.location.href);
|
||||
let script;
|
||||
switch (win.location.href) {
|
||||
case "chrome://messenger/content/messenger.xul":
|
||||
case "chrome://messenger/content/messageWindow.xul":
|
||||
case "chrome://messenger/content/messenger.xhtml":
|
||||
case "chrome://messenger/content/messageWindow.xhtml":
|
||||
script = "chrome://pEp4Tb/content/pepmsghdrview.js";
|
||||
break;
|
||||
|
||||
case "chrome://messenger/content/messengercompose/messengercompose.xul":
|
||||
case "chrome://messenger/content/messengercompose/messengercompose.xhtml":
|
||||
script = "chrome://pEp4Tb/content/pepmessengercompose.js";
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
Services.scriptloader.loadSubScript(script, win);
|
||||
}
|
||||
|
||||
function unpaint(win) {
|
||||
console.debug("experiments.js: unpaint()", win.location.href);
|
||||
switch (win.location.href) {
|
||||
case "chrome://messenger/content/messenger.xul":
|
||||
case "chrome://messenger/content/messageWindow.xul":
|
||||
case "chrome://messenger/content/messenger.xhtml":
|
||||
case "chrome://messenger/content/messageWindow.xhtml":
|
||||
win.pEpHdrView.destroy();
|
||||
break;
|
||||
|
||||
case "chrome://messenger/content/messengercompose/messengercompose.xul":
|
||||
case "chrome://messenger/content/messengercompose/messengercompose.xhtml":
|
||||
win.pEpComposer.destroy();
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"namespace": "pEp4Tb",
|
||||
"functions": [
|
||||
{
|
||||
"name": "addWindowListener",
|
||||
"type": "function",
|
||||
"description": "Adds a listener to all opening 3pane, stand-alone or compose windows",
|
||||
"async": false,
|
||||
"parameters": [
|
||||
{
|
||||
"name": "l10n",
|
||||
"type": "string",
|
||||
"description": "Stringified L10N object containing the strings"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
Loading…
Reference in New Issue