SLIDE 1
State and Future of Qt Webkit Allan Sandfeld Jensen Digia Germany - - PowerPoint PPT Presentation
State and Future of Qt Webkit Allan Sandfeld Jensen Digia Germany - - PowerPoint PPT Presentation
State and Future of Qt Webkit Allan Sandfeld Jensen Digia Germany San Francisco, 8th of November 2013 Who am I? Allan Sandfeld Jensen Living in Berlin and working on Qt WebKit for Digia Hired by Nokia in 2011 and transfered to Digia in 2012
SLIDE 2
SLIDE 3
Outline
State of Qt WebKit Overview of Qt WebKit New features in Qt WebKit Optional features in Qt WebKit Limitations and future of Qt WebKit
SLIDE 4
Recent history in WebKit
Qt WebKit was developed upstream Apple being Apple Google left in April Digia was left maintaining Windows and Android (Apple does not even support the OS X versions Qt does) Digia will make new Chromium based Qt WebEngine Qt WebKit left upstream last week
SLIDE 5
State of WebKit
Contributors and commits per month halved
SLIDE 6
State of Qt WebKit
What is going to happen now, is Qt WebKit dead?
SLIDE 7
Future of Qt WebKit
Qt WebKit in 5.2 is based on a new branch of WebKit trunk The diff is well over 2 millions lines: Mega merge The Qt port is beinghas been removed from WebKit trunk No new branches of WebKit trunk ...
SLIDE 8
Future of Qt WebKit
Continued support of Qt WebKit in Qt 5.x Best effort compatibility in Qt WebEngine. Compatibility will likely be best for the QQuick2 API Qt WebKit likely to be fully or partially deprecated after Qt 5.3 Some features of the Qt WebKit API will not be possible in Qt WebEngine
SLIDE 9
Overview of Qt WebKit Versions
Qt WebKit 2.2 (Qt 4.8)
Based on WebKit from September 2011
Qt 5.0
Based on WebKit from November 2012 (r136242)
Qt WebKit 2.3
Unofficial backport for Qt 4.8 As close to the Qt 5.0/5.1 branch as possible
Qt 5.1
Based on WebKit from November 2012 (r136242) Same branch as Qt 5.0, but with extra cherries on top
Qt 5.2
Based on WebKit from July 2013 (r153112)
SLIDE 10
Overview of Qt WebKit APIs
QWebView
WebKit1 (single process API) QWidget API
QGraphicsWebView
WebKit1 (single process API) QGraphicsScene API OpenGL acceleration possible
QDeclarativeWebView QQuickWebView
WebKit2 (multi process API) QQuick2 API Always OpenGL accelerated
SLIDE 11
New features in Qt WebKit
JavaScript JIT/LLInt
MIPS/SH4 : LLInt, JIT, JIT DFG Windows 64 : JIT x87 (x86 FP minus SSE2) : LLInt
JavaScript Garbage Collection
Incremental sweeper Activity triggered Parallel threaded
Font rendering
Kerning by default. For instance: TeaToolsVAV, Web Fonts: WOFF support, better SVG fonts.
SLIDE 12
New features in Qt WebKit
Canvas Path Object Page Visibility API
New API for visibility aware web apps.
Link prefetch
<link rel="prefetch" href="www.example.com">
Mouseenter and mouseleave events
Better for hover effects than mouseover mouseout.
Web Notifications Geo Location (depends on new QtPositioning module, and geoclue on Linux) CSS compositing and background-blend-mode. Example
SLIDE 13
New features in Qt WebKit
CSS Image-rendering quality
image-rendering: auto; image-rendering: optimizeQuality; image-rendering: optimizeSpeed;
CSS Filters and Shaders: Adobe CSS Filter Lab CSS Regions: Region example CSS Grid, Shapes, Multi column and improved animations
SLIDE 14
Optional features in Qt WebKit
How can I tell which features are enabled? Listed when running qmake You can enable disabled features using WEBKIT_CONFIG You can also edit qtwebkit/qmake/mkspecs/features/features.pri
SLIDE 15
Optional features in Qt WebKit
CSS Text Decoration 3
WEBKIT_CONFIG+=css3_text
- webkit-text-decoration-style: wavy
- webkit-text-decoration-style: double
MathML
WEBKIT_CONFIG+=mathml
σ = 1 N
N
∑
i = 1(xi − μ )2.
Download attribute
WEBKIT_CONFIG+=download_attribute
SLIDE 16
Optional features in Qt WebKit
CSS Variables
WEBKIT_CONFIG+=css_variables
Shadow DOM API
WEBKIT_CONFIG+=shadow_dom
WebAudio (GStreamer only)
WEBKIT_CONFIG+=web_audio
MediaStream (GStreamer only, some hacking required)
WEBKIT_CONFIG+=media_stream
HTML5 Video text track (subtitles, captions, etc.
WEBKIT_CONFIG+=video_track
Help out, and you might see some of these features in Qt 5.3
SLIDE 17
Limitations in Qt WebKit
QML2 on embedded, and non-X11 Linux Plugins in WebKit2 on non-Linux LLInt and DFG on Windows 64 OpenGL acceleration requires specific setup or WebKit2 Currently no Android support
iOS support is not possible either, but that will be the same for Qt WebEngine
SLIDE 18
Unique features of Qt WebKit
Single process Access to JavaScript objects (for now) Synchronous access to JavaScript objects Synchronous access to web engine internals Synchronous access from JavaScript to QObjects Replaceable QNetworkAccessManager (for now) Low memory consumption A feature complete API (for now) JIT support for less common architectures
SLIDE 19