WPE WebKit for Android
Fernando Jiménez Moreno
Igalia, May 2021
1 / 20
2 / 20
History & motivations
Credits: Jeff Goldblum & Žan Doberšek
3 / 20
0:00
0:00
4 / 20
Building blocks
5 / 20
Build system
90+ dependencies
Cerbero from GStreamer
class Recipe(recipe.Recipe):
name = 'wpewebkit'
version = '2.30.4'
stype = SourceType.TARBALL
btype = BuildType.CMAKE
url = 'https://wpewebkit.org/releases/wpewebkit-{0}.tar.xz'.fo
python3 scripts/bootstrap --build
6 / 20
Build system
self.patches += [
'wpewebkit/0001-Android-remove-uses-of-shm_open-and-shm_unlink
'wpewebkit/0001-Android-logging.patch',
'wpewebkit/0001-Android-spawn-services.patch',
'wpewebkit/0001-Android-web-network-process-entrypoint.patch',
'wpewebkit/0001-Android-terminate-process.patch',
'wpewebkit/0001-Android-disable-pson.patch',
'wpewebkit/0001-Try-to-find-libz-with-pkg-config.patch',
'wpewebkit/0001-Scroll-related-changes.patch',
'wpewebkit/0001-PlatformDisplayLibWPE-use-eglGetPlatformDispla
'wpewebkit/0001-GLContextEGL-don-t-attempt-to-swap-buffers-for
'wpewebkit/0001-ThreadedCompositor-allow-null-native-surface-h
]
7 / 20
8 / 20
WPEView
void loadUrl(@NonNull String url)
boolean canGoBack()
boolean canGoForward()
void goBack()
void goForward()
void stopLoading()
void reload()
int getProgress()
String getTitle()
String getUrl()
String getOriginalUrl()
9 / 20
WPEView
<com.wpe.wpeview.WPEView
android:id="@+id/wpe_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"/>
10 / 20
WPEView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var browser = findViewById(R.id.wpe_view)
browser?.loadUrl(INITIAL_URL)
}
11 / 20
Process Model
WebProcessService
WPEService
Service
NetworkProcessS
WebProcessGlue NetworkProcess
WebProcessGlue
JNI NetworkProcessGlue JNI
12 / 20
Process Model - PSON
13 / 20
Browser and Pages
14 / 20
WPE Backend
15 / 20
gfx.View
16 / 20
Future work
h/w accelerated video playback
Native Hardware Buffers
PSON
armv7, x86
Emulator
Packaging and distribution
Resize, fullscreen
Many, many more
17 / 20
Give it a try
https://cloud.igalia.com/s/E2sHHMRTwAHfCS7 https://github.com/Igalia/wpe-android
18 / 20
anks!
Any questions?
Ask for help!
ferjm@igalia.com
19 / 20
20 / 20
WPE WebKit for Android

WPE WebKit for Android