Release v2.4.0 — Erzwungene Einstellungen: about:config-Prefs bei jedem Start setzen
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
This commit is contained in:
61
experiments/prefs/api.js
Normal file
61
experiments/prefs/api.js
Normal file
@@ -0,0 +1,61 @@
|
||||
"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);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user