Draft: 40091: Move HTTPS Everywhere into omni.ja
This is only for desktop, we'll have to handle Fenix separately. I tried using the same code also for Fenix (just putting it in some common place instead of
BrowserGlue.jsm), but there were issues with the builtin extension UI not being visible until force-restarting Fenix. So I believe it's better to install it in Fenix separately as they document it, from a
resource://android/assets/..., which maps to
app/src/main/assets/. See https://searchfox.org/mozilla-central/rev/bfdb6a1ef893e4c926ce52700ed187a9743603ce/mobile/android/docs/geckoview/consumer/web-extensions.rst.
For this patch to work it will need a tor-browser-build counterpart, which unzips https-everywhere xpi in the right place into omni.ja. The idea is that we will have a (quite arbitrary) fixed place (right now
resource://torbutton/content/extensions/https-everywhere/) where the browser will look for the builtin extension files (unpacked, so
*/manifest.json, etc.). So, tor-browser-build can unpack
omni.ja, unzip the xpi in the right place, and repack.
In my testing, the settings of the previously installed https-everywhere are preserved, and it's correctly uninstalled (and its xpi removed from the browser profile). The UI is mostly the same in
about:addons, with the only changes that the builtin extension cannot be uninstalled nor reported (but can be disabled). I did not add explicit checks to prevent a user from manually installing a
https-everywhere-eff xpi: if that happens it will be uninstalled on next browser restart in favour of the builtin one, so I though it was not strictly needed to check this.