Notably:
- Import logger improvements from uBO
- Import CNAME uncloaking from uBO
- Import more improvements from uBO
- Make use of modern JS features
This should un-stall further development of uMatrix.
Related issues:
- "Requests bypass uMatrix on Firefox start"
<https://github.com/uBlockOrigin/uMatrix-issues/issues/69>
Using same approach as with uBO:
https://github.com/gorhill/uBloc/commit/41548be6be35
`suspendTabsUntilReady` advanced setting added to "More" pane,
useful only for Chromium -- the blocking of early network
requests is enforced unconditionally on Firefox (because it
supports returning Promises from webRequest handlers).
- "Cookies leaking temporarily"
<https://github.com/uBlockOrigin/uMatrix-issues/issues/74>
Changes in the webRequest API in Chromium 72+ caused uMatrix
to fail to process `Cookie` and `Referer` headers on that
platform.
- us integer tab id -- do not stringify anymore
- improved the parsing of hosts files
- better handling of behind-the-scene network requests when a
context is provided by the webRequest API
- imported webextFlavor code from uBO
- converted instances of object-as-dict to Map()
- drop needless overhead now that legacy support is dropped
- output extra information about the headers which are
modified and their value before/after modification
Additionally, performance improvements:
- Reduce overhead of collapsing elements
(see https://github.com/gorhill/uBlock/issues/2839)
- Cache decomposition of source hostname when matrix-filtering
Also, various code review.
The end result of the flawed UA spoofer was to accomplish the
OPPOSITE of the intended goal. UA spoofing for privacy purpose
turns out to be a whole complicated task on its own, and is
best undertaken as a separate dedicated extension -- assuming
it is possible at all.
In any case, this had no place in a "Privacy" section in uMatrix,
this was a bad idea to create this feature in the first place. It's
never too late to correct a bad idea, and this is the purpose of
this commit.