
How do I modify a locked setting in the config editor?
I'm using Thunderbird 78.2.2 under Windows 10 Home. I just noticed that I have four locked settings in the config editor. I was not aware that it was possible to lock a setting. I can't find any mention of it in the SUMO KB.
They are dom.ipc.processCount.webIsolated , dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled fission.autostart and toolkit.telemetry.enabled .
I also have 68.12.0 installed with a separate profile. It has fission.autostart and toolkit.telemetry.enabled locked. I have 60.9.1 installed in another profile. It has just toolkit.telemetry.enabled locked. So I suspect this feature was first added in version 60.*
I searched each prefs.js file for toolkit.telemetry.enabled and did not find it. I do not have any user.js files. I assume these settings are locked because some features are only partially implemented in Gecko and they didn't want anybody to be able to modify the settings yet. I don't have a problem with the current value of those locked settings . My concern is that I want to understand how things work and remain in control. Next time it might not be something so benign.
I searched about:config in Firefox 80.0.1. They do not have a status column so you can't find locked settings without either knowing which ones to check or browsing the entire list. fission.autostart , toolkit.telemetry.enabled, dom.ipc.processCount.webIsolated, privacy.restrict3rdpartystorage.url_decorations , dom.ipc.processCount.webIsolated and dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled have a lock icon next to the setting.
How is locking a setting implemented? I know that some default settings created by omni.ja in the Thunderbird installation directory don't appear in the config editor but you can add them in the config editor if you want to modify them. I extracted a copy of mailnews.js and all-thunderbird.js from omni.ja and didn't find any mention of toolkit.telemetry.enabled
I know that Firefox used to support using lockPref() statements in a optional mozilla.cfg file to lock settings, but AFAIK Thunderbird has never used/supported that file.
How can you modify a locked setting? I understand the risk.
Chosen solution
https://bugzilla.mozilla.org/show_bug.cgi?id=1626096 looks like it covers dom.ipc.processCount.webIsolated where the patch shows the source as
// Changing this pref will break fission completely, so it is locked. pref("dom.ipc.processCount.webIsolated", 1, locked);
I would guess all the others are similarly declared and locked in source.
Read this answer in context 👍 1All Replies (4)
Thanks for the reply but I don't think my installation does that. My impression is that was an optional feature mainly used by administrators remotely deploying/customizing Thunderbird using tools such as AutoConfig/MissionControl .
The archived Mozilla Developer Network (MDN) article on "Locked config settings" states "This feature exists for Mozilla and Firefox, but not for Thunderbird" . That was last modified Mar 23, 2019. However that might be wrong as https://support.mozilla.org/en-US/questions/1219799 describes somebody getting mozilla.cfg to work with 52.8.0 using a /usr/lib/thunderbird/default/pref/local-settings.js file.
I do not have a mozilla.cfg , thunderbird.cfg or local-settings.js file anywhere on my system.
I looked in C:\Program Files\Thunderbird 78\defaults\pref for any *.js file that could specify the name of the lock file using a general.config.filename setting or to lock the settings themselves using lockPref(). In my installation that child directory has just a channel-pref.js file. It has only one setting: pref("app.update.channel", "release");
I extracted the contents of the default\pref directory and the greprefs.js file from the omni.ja file and used grepwin to search them. I could not find any mention of lockpref, mozilla.cfg, thunderbird.cfg or general.config.filename other than a "On networks deploying QoS, it is recommended that these be lockpref()'d," comment in the greprefs.js file.
I then extracted the entire contents of omni.ja and searched again. I found javascript code to implement a lockPref function but nothing that called it. I found "general.config.filename", { what: RECORD_DEFAULTPREF_STATE }], in a Map in omni\modiules\TelemetryEnvironment.jsm . That's it.
Chosen Solution
https://bugzilla.mozilla.org/show_bug.cgi?id=1626096 looks like it covers dom.ipc.processCount.webIsolated where the patch shows the source as
// Changing this pref will break fission completely, so it is locked. pref("dom.ipc.processCount.webIsolated", 1, locked);
I would guess all the others are similarly declared and locked in source.
Thanks. I found that snippet (and similar ones for the other locked settings) in greprefs.js in omni.ja.