-
Notifications
You must be signed in to change notification settings - Fork 156
Description
Hey there,
I am unsure whether this is the right place to report my issue. Please tell me if there are better places to report it.
TL:DR: libWPE/WPE page rendering is severely broken for HbbTV pages, whereas Chrome (and Firefox) render the content just fine.
Background
I am currently trying to implement a browser to view HbbTV portals/webpages. Loosely speaking, HbbTV is an industry standard to bring TV-optimized (for controls and view) media services to TV devices where internal browsers are used to render the content.
Technically, the 'entry point' url is transmitted via the DVB stream, e.g. via satellite signals.
For instance, the HbbTV URL to the German TV channel ARD is: https://tv.ardmediathek.de/index.html?platform=hbbtv
This URL is the reference HbbTV pages relevant for this issue.
For context here, the returned header 'Content-Type' is 'application/vnd.hbbtv.*', triggering normal browsers into a download instead of rendering the HTML data. Therefore, one must modify/intercept the return header (to 'text/html') before the download/rendering decision is made.
Testing with Chrome
For Chrome, I used the addon simple-modify-headers with the following configuration:
chrome_local_header_overrides.zip
Broken Rendering Comparisons
I tested the reference URL on libWPE (with my basic WPE implementation) and on (vanilla) Chrome (also on Firefox, but it worked identically well similar to Chrome)
WPE
[Click to show] WPE with minimal browser (*rendering broken*)
Note that the window content is NOT black, it's #000e29; blue-ish, so the basic color scheme is correctly loaded.

Chrome
Steps to Reproduce using WPE:
I wrote a minimal libWPE-powered browser. There is also a built-in logic to load 'application/vnd.hbbtv.*' as HTML. See the source data attached:
CMakeLists.txt
main.cpp
Dockerfile (remove the .txt suffix)
You can build and run the browser in Linux using Docker by the following steps:
# "ls" should show:
# CMakeLists.txt
# Dockerfile
# main.cpp
# Build the app in the container image
docker build -t wpe-window .
# Enable X11 rendering from Docker container
xhost +local:docker
# Run the WPE browser
docker run --rm --net host --privileged -e WEBKIT_INSPECTOR_SERVER=0.0.0.0:9222 wpe-windowWPE Versions:
The apt packages have the following versions:
- libwpe-1.0-1/stable,now 1.16.2-1 amd64 [installed,automatic]
- libwpe-1.0-dev/stable,now 1.16.2-1 amd64 [installed]
- libwpebackend-fdo-1.0-1/stable,now 1.16.0-1 amd64 [installed,automatic]
- libwpebackend-fdo-1.0-dev/stable,now 1.16.0-1 amd64 [installed]
- libwpewebkit-2.0-1/stable,now 2.48.3-1 amd64 [installed,automatic]
- libwpewebkit-2.0-dev/stable,now 2.48.3-1 amd64 [installed]
Additional comments:
For a few HbbTV pages, I added a ton of polyfill fixes to get rid of the immediate JS errors, which let's me progress somewhat, but it seems that there is something fundamentally different compared to the ordinary Firefox/Chrome web standard implementation.

