Skip to content

Page rendering of HbbTV urls severely broken #1619

@j-frei

Description

@j-frei

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:

[Click to show] Chrome Addon simple-modify-headers configuration (required to render the page) Image
Otherwise, here are the Chrome WebDev local overrides scripts that allows Chrome to render the page.

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.
Image

Chrome

[Click to show] Chrome (*rendering working*) Image

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-window

WPE 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions