Rebase onto ESR 115.35.2#178
Open
abranson wants to merge 7 commits into
Open
Conversation
Switch the packaging submodule from the old gecko-dev mirror URL to the Sailfish Firefox mirror URL. Clean builders need to fetch the upstream Firefox repository directly, while the downstream source changes are supplied by the RPM patch stack during prep. Move the `gecko-dev` gitlink from the previous Firefox 91-based commit to `9e858fd64454346ae7d6bdcc56609155d5b75f69`, the Firefox 115.35.2 release base.
6c80d57 to
1ac421e
Compare
rainemak
reviewed
May 27, 2026
Add the extracted `gecko-qt/` source tree that the RPM patch stack now symlinks back into the Firefox checkout. Keeping these files in the parent package repo avoids committing patched submodule content. Restore Qt system integration under `dom/system/qt`, including the QTM location provider, haptic feedback bridge, and the local moz.build file needed to wire those sources back into Gecko. Restore the Qt graphics and platform integration pieces: `gfxQtPlatform`, Qt icon decoding, the GTK-to-Qt icon converter, the Chromium Qt message pump, and native Qt app support under toolkit/xre. Restore the Qt widget backend as a coherent block. This includes widget factory registration, static component metadata, GfxInfo, ProcInfo, colors, app shell, screen handling, look and feel, native theme stubs, file/color pickers, print settings/dialog support, drag service, sound, idle service, bidi keyboard, and the media-keys event source factory. The commit is intentionally additive: it restores the 58 Qt platform files without mixing in the later EmbedLite and RPM patch-stack changes.
Rework EmbedLite's app, view, and window integration for the Firefox 115 WebRender embedding path. The IPC definitions and the app/view/window C++ classes are updated together so the embedding layer exposes the state needed by the browser and QtMozEmbed without depending on intermediate rebase commits. Update the rendering path around `EmbedLiteCompositorBridgeParent`, `EmbedLitePuppetWidget`, `PuppetWidgetBase`, `nsWindow`, and the view/window child and parent classes. These changes keep WebRender presentation on the Gecko-owned offscreen surface path, publish frames through the EmbedLite platform-image bridge, and preserve the view update, APZ, and orientation notifications expected by the Sailfish browser stack. Refresh process and thread startup code in `EmbedLiteSubThread`, `EmbedLiteAppProcess*`, `EmbedLiteContentProcess*`, and `EmbedLiteViewProcessChild`. This keeps the base-thread startup model, content-process setup, and shutdown ordering compatible with the newer Gecko embedding APIs. Refresh EmbedLite service registration and component glue. The component factory files, `components.conf`, moz.build entries, native clipboard bridge, and static component wiring are updated together so browser, prompt, clipboard, and helper services are available from the embedded runtime. Update embedding defaults and utility code in `embedding.js`, `DirProvider`, `GeckoLoader`, `EmbedLiteSecurity`, `EmbedLiteXulAppInfo`, `BrowserChildHelper`, `WebBrowserChrome`, and `WindowCreator`. These changes cover profile/pref initialization, security checks, browser chrome plumbing, and runtime configuration needed by the refreshed EmbedLite stack. Adjust the local mozconfig and EmbedLite test moz.build files to match the source layout and the components that remain active after the WebRender integration.
Move the xulrunner package metadata from Firefox 91.13.1 to Firefox 115.35.2 and replace the historical 99-patch series with a compact 80-patch series matching the current Gecko, Qt, and EmbedLite source layout. Regenerate and renumber the retained patches so the spec applies a single ordered stack. The new stack keeps the base symlink, Qt layer restoration, EmbedLite build fixes, Rust/build-system fixes, WebRTC/gecko-camera support, content-action integration, media handling, user-agent support, dconf time format support, glslopt updates, and the late EmbedLite integration topics. Fold temporary rebase patches back into their functional topics. The late patches now cover Gecko configure integration, WebRender offscreen compositing, native prompt dialogs, media sink shutdown guarding, gecko-camera chroma and drain fixes, default protocol-handler injection, toolkit error pages, helper-app static registration, and EmbedLite search engine loading from settings. Drop obsolete patches that are already upstream, no longer apply, or are no longer part of the supported package shape. This removes the stale system sqlite path, old build-version workaround, membarrier workaround, NS_LITERAL_CSTRING cleanup, aarch64 elfhack support, GMP/gmp-droid changes, old FFmpeg/libevent carry-overs, old Rust workarounds, and the superseded external GL context wrapping patch. Remove `rpm-old-patches/` entirely. The two old holdover patches there are not referenced by the refreshed spec and would otherwise make the patch stack look larger than the actual build input. Update `xulrunner-qt5.spec` for the refreshed engine: set `greversion` to 115.35.2, keep system library switches in the spec, enable system libvpx, drop unsupported system sqlite, hunspell, and bz2 toggles, and update minimum toolchain/library requirements for Rust, Cargo, NSS, ICU, and cbindgen. Add the new build requirements needed by the refreshed stack, including GLib, GObject, and python3-curses. Keep bzip2-devel as an unconditional requirement because bundled freetype still needs bzip2 support even though there is no longer a corresponding configure toggle. Clean up mozconfig generation by deleting duplicate system-library options from the base config, writing a fresh shared RPM environment file, disabling C/C++ debug symbols for packaged libxul builds, using `%SB2_TARGET` for the Cargo target, setting the target architecture per RPM arch, and forcing GNU readelf where the SDK/qemu path is sensitive to libxul size. Update bindgen and libclang handling by exporting `MOZ_LIBCLANG_BINDGEN_PATH`, selecting the correct host libclang path by architecture, and adding `READELF` to both the shared RPM environment and the mozconfig. Disable elfhack because the aarch64 SDK self-test executes target binaries through qemu and is not reliable after libxul links. Switch the build to `MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system` so mach uses the system Python package source expected by the current Firefox build system.
Remove `EmbedLiteCompositorProcessParent.{cpp,h}` from the EmbedLite
embedding tree. The refreshed WebRender path uses
`EmbedLiteCompositorBridgeParent` and the Gecko-owned offscreen compositor
surface instead of the old compositor-process parent implementation.
The removed files were stale, unreferenced by the refreshed EmbedLite
moz.build files, and still carried old layer-manager and `CompositorOGL`
setup code from the pre-WebRender compositor model. Keeping them in the tree
made the package look as if that path was still supported.
This is separated from the larger EmbedLite update to show that the only
behavior here is deleting dead compositor-process code.
Wait for droid decoder EOS before resolving Gecko drain requests and remember decoder EOS for follow-up drains after delayed output. Dispatch MediaDecoderStateMachine initialization without tail dispatch when the caller is not inside a tail-dispatchable AbstractThread. Preload autoplay metadata so inaudible videos can be identified even when Sailfish defaults implicit media preload to none.
Web content uses the non-native Theme path when widget.non-native-theme.enabled is true. On Qt, the generic checkbox/radio colors and WebRender rounded-border path can produce solid black controls. Draw Qt checkbox and radio controls with explicit light control colors and simple primitives that work in the WebRender path used by Sailfish Browser.
1ac421e to
1f26fe3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebase onto Firefox ESR 115.35.2, released 7th May 2026
GLScreenBuffer/EGLImage. Dropped the old scenegraph GL context support.