This patch introduces independent docker-based build environments for WebKit and Firefox
browsers.
To launch an interactive session inside the environment:
```sh
./browser_patches/docker/cli.sh webkit-debian-11 build # builds image
./browser_patches/docker/cli.sh webkit-debian-11 enter # launches interactive container
```
This roll moves Juggler component registration to a new system that
is used in XPCOM: this is what both RemoteAgent and Marionette use.
Drive-by: we now have to explicitly pass default values to dispatched
mouse events to avoid a `MOZ_ASSERT` trigger inside a drag service
native code.
Manual conflict resolutions: ab3ed0cb2c
Patch by @dpino
Fixes the following error on Ubuntu 18:
```
[716/8153] Linking CXX shared library lib/libmbmalloc.so
FAILED: lib/libmbmalloc.so
: && <CXX> -fPIC -fdiagnostics-color=always -Wextra -Wall -pipe -Wno-odr -Wno-stringop-overflow -Wno-nonnull -Wno-array-bounds -Wno-expansion-to-defined -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-ari>
/usr/bin/ld: Source/bmalloc/CMakeFiles/bmalloc.dir/libpas/src/libpas/pas_deallocate.c.o: relocation R_X86_64_PC32 against symbol `pas_segregated_page_deallocation_did_fail' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
```
Pretty-diff: a479046919
* nsIScreencastServiceClient is not thread safe refcounted so we make nsScreencastService::Session a thread safe refcounted object and keep it alive while there are inflight frames. Once such frames get handled on the main thread we check if the session has been stopped.
* Removed mCaptureCallbackCs in favor of atomic counter (mClient is not accessed only on the main thread).
* HeadlessWindowCapturer now holds RefPtr to the headless window object to avoid use after free when clearing it as a listener on the widget.
* ScreencastEncoder is not ref counted anymore.
Pretty-diff: 5f5042ff1e
Turns out the weird compilation error is fixed if we use Clang 14
to compile.
This is the same clang that would've been shipped in mozilla build
toolchain.
The canonical script to install pip3 doesn't work with Python3.6
that is used to compile WebKit on Ubuntu 18.04, so we fallback
to installing pip3 from apt.
It was recently enabled by default upstream 461deb6c6d
We have this feature disabled in Chromium as we want the iframes to be eagerly loaded to avoid clients' confusion. This PR disables it back in WebKit too.
Pretty-diff: 7aad962e5d
Turns out we were bundling x86_64 `libstdc++` with aarch64
builds on Ubuntu, which was useless and implies that this
library might not be needed at all.
Ubuntu 18.04 ships Python 3.6 by default on Ubuntu18.04; this python,
however, fails to run Firefox build system, so we have to install
Python 3.8 and default it to `python3`.
Prebuilt WASI sysroot is not availabe any more, so this patch
disables sandboxing via WASI for now in our builds.
I tried compiling WASI manually, but it didn't work out for me
for some reason.
Turns out Ubuntu 20.04 has both `libenchant` and `libenchant-2`.
To keep compiling against `libenchant` everywhere it exists,
we change the `aptIfElse` helper method to pick one or another.
This patch:
* fixes bash script bug: at least in bash 5, assignment to a **local**
variable overwrites the `$?` code, so the following condition is never true.
* adds the `libenchant-2-dev` library
Pretty diff: ff6e976044
The 2e331715ff introduced
universal webkit build and tried re-using archive deduping technique
across all our regular JHBuild-based builds.
However, this turns out to be too aggressive and doesn't work. At least
on Ubuntu 18.04:
- `minibrowser-gtk/minibrowser` is identical to
`minibrowser-wpe/minibrowser`
- WPE gets symlinked into GTK
- Thus we now always start headed
This patch:
* removes "deterministic" argument from `rdfind` on Ubuntu 18.04.
`rdfind` is a new addition, but it's nice to have since it saves 10%
of the archive size.
* drops `stdc++fs` from dependencies. This doesn't seem to be necessary
for JHBuild but breaks universal build.
Pretty diff: 256392e8c4
Turns out default GnuTLS on Ubuntu 18.04 is 3.5.18, so we should
use OpenSSL.
The glib-networking backend selector condition is thus incorrectly
compares version triplets.
* `clip` option is always passed from the client code
* with this change, we can no longer capture screenshot of a blinking
caret; the browser-side API doesn't have this capability.
This roll:
- NetworkObserver now uses the `remote's` ChannelEventSink layer to
subscribe to redirects.
- Wheel events now must be dispatched from browser process.
- There's a new API for console messages
- The old methods to wait for search service and addon manager no longer
work; speculatively remove them since neither `remote` nor
`marionette` have anything like this.
Native manual merge: 9e6fcfd868