Neuer forcedPrefs-WebExtension-Experiment (Services.prefs) setzt beim Start globale Prefs (Startseite aus, Kartenansicht, nicht gruppiert, absteigend, 3-Spalten-Layout, nicht auto-gelesen) sowie pro Identität die Signatur-/ Antwort-Einstellungen. Pro Setting im Options-Dialog (⚙-Tab) abschaltbar. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PZHd9vRsBiH8cKYdQo1Yv
62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
"use strict";
|
|
|
|
// Privilegierter Parent-Scope: schreibt/liest about:config-Prefs über Services.prefs.
|
|
// Der Modulpfad von ExtensionCommon wechselte mitten im TB-Lebenszyklus:
|
|
// TB 115+ -> ExtensionCommon.sys.mjs (ESM)
|
|
// TB 109-114 -> ExtensionCommon.jsm (JSM)
|
|
// Deshalb defensiv laden, damit dieselbe api.js über die Flotte funktioniert.
|
|
var { ExtensionCommon } = (() => {
|
|
try {
|
|
return ChromeUtils.importESModule(
|
|
"resource://gre/modules/ExtensionCommon.sys.mjs"
|
|
);
|
|
} catch (e) {
|
|
return ChromeUtils.import("resource://gre/modules/ExtensionCommon.jsm");
|
|
}
|
|
})();
|
|
|
|
// `Services` ist im privilegierten ExtensionAPI-Sandbox in TB 109+ global
|
|
// (stellt Services.prefs = nsIPrefBranch bereit); kein Import nötig.
|
|
|
|
this.forcedPrefs = class extends ExtensionCommon.ExtensionAPI {
|
|
getAPI(context) {
|
|
return {
|
|
forcedPrefs: {
|
|
async setPref(name, type, value) {
|
|
switch (type) {
|
|
case "bool":
|
|
Services.prefs.setBoolPref(name, !!value);
|
|
break;
|
|
case "int":
|
|
Services.prefs.setIntPref(name, value | 0);
|
|
break;
|
|
case "string":
|
|
// setStringPref ist unicode-sicher (im Gegensatz zu setCharPref).
|
|
Services.prefs.setStringPref(name, String(value));
|
|
break;
|
|
default:
|
|
throw new Error("forcedPrefs.setPref: unknown type " + type);
|
|
}
|
|
return true;
|
|
},
|
|
|
|
async getPref(name, type) {
|
|
if (Services.prefs.getPrefType(name) === Services.prefs.PREF_INVALID) {
|
|
return null;
|
|
}
|
|
switch (type) {
|
|
case "bool":
|
|
return Services.prefs.getBoolPref(name, false);
|
|
case "int":
|
|
return Services.prefs.getIntPref(name, 0);
|
|
case "string":
|
|
return Services.prefs.getStringPref(name, "");
|
|
default:
|
|
throw new Error("forcedPrefs.getPref: unknown type " + type);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
}
|
|
};
|