Version 41 (modified by 13 years ago) ( diff ) | ,
---|
EFL Port of WebKit
About EFL
The Enlightenment Foundation Libraries (EFL for short) are a set of graphical libraries intended to provide easy-to-use resources for building rich user interfaces based applications. It is the core of the Enlightenment (E17) desktop shell and window manager. As mentioned in Enlightenment's official web site, "the libraries are meant to be portable and optimized to be functional even on devices such as mobile devices". Its core components are:
- Evas: Highly optimized raster canvas, supports software or hardware accelerated rendering
- Edje: Declarative UI library, provides rich theme
- Ecore: Event loop and utility classes to interface with system (X, DirectFB, Cocoa...)
- Eina: Basic data types
About the port
WebKit/EFL is a project aiming at porting WebKit to the Enlightenment Foundation Libraries. The port shares code with the [WebKitGTK GTK+ one], as we also use Cairo for rendering and (optionally) LibSoup for networking.
Status
The port is being developed and maintained by ProFUSION and Samsung. An early version was started by INdT/OpenBossa, but it was changed significantly before inclusion in SVN (See their initial announcement at 0.1 version (Jun/16/2009)). The current version is quite complete, featuring:
- Embedding API mostly consistent w/ Gtk, but following EFL naming scheme and conventions (such as usage of Evas Smart Objects and its callbacks);
- Theme support per Web Frame;
- Most of HTML5 features (video is missing);
- Various delegates to allow full customization of Pop-up and Context menus;
- Most of page settings (auto load images, disable flash or javascript, etc);
- Override-able input handling, allowing custom mouse and keyboard behavior;
- Override-able backing store, allows extensions such as tiled backing store or off screen rendering.
Future plans:
- NSAPI plugins, using windowless systems for integration into Evas;
- HTML5 feature completion (video, geolocation);
- Improving API coverage, exposing more features such as the Editor and Inspector clients;
- Exposing DOM;
- WebKit2 support.
Other desired features:
- Elementary widget wrapping up ewk_view into a convenient widget, providing default implementation for delegates;
- Remove strict X11 dependency, allowing DirectFB and FB at least;
- Less dependency on GNOME technologies, maybe remove Cairo and LibSoup (the last one is already optional).
Getting the source
The port is entirely in the official SVN repository. Please follow the usual instructions for obtaining WebKit's source code.
Development
Dependencies
Below is a list of Debian package names you will need to install.
- libicu-dev
- libxslt-dev
- libsqlite3-dev
- gperf
- bison
- flex
- libjpeg62-dev (newer libjpeg may be used as well)
- libpng12-dev (newer libpng may be used as well)
- libxt-dev
- libfontconfig1-dev
- libcairo2-dev
- libfreetype6-dev
- libglib2.0-dev (optional, required by libsoup backend)
- libgl1-mesa-dev
- libsoup2.4-dev (newer libsoup may be used as well) or libcurl4-dev
- libgtk2.0-dev
- libgstreamer0.10-dev
- cmake
Additionally, the EFL specific packages need to be installed.
- eina
- eet (required by edje in evas, compile it before evas!)
- evas
- ecore (with optional ecore-x support, and glib integration if you want to use glib/libsoup)
- edje
- embryo (required by edje)
Build and Install
The port can be built using WebKit's default build-webkit script. By default, WebKit will be built in the WebKitBuild/<release type>
directory, where <release type>
is either Release or Debug. To override the default settings, you can set the WEBKITOUTPUTDIR
environment variable to set a different build location.
After having checked out the source code, run the script, which will take care of calling both CMake and make.
WebKit$ ./Tools/Scripts/build-webkit --efl
A variety of features can be enabled or disabled by the build-webkit
script, pass the --help
argument to it to see all possible options (please notice some options have no effect as they depend on features which have not been implemented on the port yet):
WebKit$ ./Tools/Scripts/build-webkit --help WebKit$ ./Tools/Scripts/build-webkit --efl --debug --prefix=/opt/webkit-efl --no-svg --page-visibility-api
It is also possible to pass extra arguments directly to CMake by using the --cmakearg
option.
WebKit$ ./Tools/Scripts/build-webkit --efl --cmakearg="-DCMAKE_CXX_COMPILER=/opt/c++ -DCMAKE_PREFIX_PATH=/usr/local"
As with any CMake project, it is later possible to edit the existing build configuration by using tools such as ccmake
or cmake-gui
.
WebKit$ ./Tools/Scripts/build-webkit --efl --debug WebKit$ cd WebKitBuild/Debug WebKit/WebKitBuild/Debug$ cmake-gui . # Change a few options WebKit/WebKitBuild/Debug$ make # Build again
The SHARED_CORE option
By default, internal WebKit libraries such as JavaScriptCore and WebCore are built as static libraries and linked into the libewebkit shared library, which is the actual port library. It is also possible to build all libraries as shared libraries, which reduces link time and memory consumption but has a slight performance hit during application startup (obviously, all the shared libraries then need to be distributed and installed).
In order to enable the SHARED_CORE option, pass --cmakearg="-DSHARED_CORE=ON" to the
built-webkit` script.
WebKit$ ./Tools/Scripts/build-webkit --efl --cmakearg="-DSHARED_CORE=ON"
Building without LibSoup or Glib
It is possible to build webkit-efl without glib-dependent libraries such as LibSoup, and even without glib itself.
To use the libcurl network backend, pass --cmakearg="-DNETWORK_BACKEND=curl
to the build-webkit
script.
WebKit$ ./Tools/Scripts/build-webkit --efl --cmakearg="-DNETWORK_BACKEND=curl"
To build without Glib, you should use:
build$ ./Tools/Scripts/build-webkit --efl --no-video --cmakearg="-DNETWORK_BACKEND=curl -DENABLE_GLIB_SUPPORT=OFF"
Note that if you ask for disabling Glib (-DENABLE_GLIB_SUPPORT=OFF
), but still use LibSoup backend or video support, it will force enabling Glib back (LibSoup and Video depend on Glib).
Building DumpRenderTree
DumpRenderTree is related to WebKit's layout tests and can be run with the run-webkit-tests
script. Properly using it is outside the scope of this page.
In order to build it in a way that all expected tests pass and it does not crash, however, certain features need to be enabled when building the port. SHARED_CORE currently needs to be turned on, and some features need to be enabled manually.
./Tools/Scripts/build-webkit --efl --touch-events --touch-icon-loading --blob --device-orientation --fullscreen-api --geolocation --notifications --orientation-events --video --workers --shared-workers --request-animation-frame --page-visibility-api --cmakearg="-DSHARED_CORE=ON"
Coding Style
Questions, feedback
If you have questions please join #webkit, #webkit-efl or #edevelop on irc.freenode.net. You may ask k-s, antognolli, acidx, demarchi, rakuco, gyuyoung or other developer there.
- IRC: #webkit, #webkit-efl on irc.freenode.net
- The webkit-efl mailing list (development discussion, low traffic)
Attachments (1)
-
ewk_frame_tutorial.pdf
(465.3 KB
) - added by 12 years ago.
Ewk_frame tutorial
Download all attachments as: .zip