Intel's Chromium EFL WebView Release ==================================== Version 0.1, 08/2013 1) Introduction Today we're releasing a patchset on top of Chromium 28.0.1500.36 that enables you to use Chromium as an Evas_Object inside EFL applications. 2) License Please see LICENSE.txt. 3) Architectural Overview The EFL WebView is based on Chromium's WebContentView architecture. In the Chromium codebase, 4 implementations of the WebContentView class exist: Win, Mac, Gtk+, Aura. It is the basic abstraction of a UI toolkit-independent control that renders web pages. Our patch set adds an additional implementation that uses and complies with concepts from the EFL toolkit. So, in addition to Chromium's implementations we added WebContentsViewEfl. The WebContentsView architecture requires a related container, for our case this is RenderWidgetHostViewEfl. Additional integrations with EFL were required, such as implementing a message pump based on the EFL event loop (see efl_webview/lib/message_pump_xwalk.h), and modifying Chromium's gyp-based build files to link against the EFL toolkit. The EFL WebView was designed as a library that complies with EFL concepts. As such, when developing an application based on the Chromium EFL WebView, you can just link against our new library and use the provided API header. The EFL WebView provides an executable launcher that runs a Chromium renderer process which is used as soon as the EFL WebView is used in an EFL application. 3) Instructions 1. Check out Chromium using git or svn equivalent to the following revision: http://src.chromium.org/svn/branches/1500/src@204086 (Instructions at http://dev.chromium.org/developers/how-tos/get-the-code ) 2. Make sure you can build Chromium from upstream, ideally using make, not ninja. 3. Apply the files from the patchset/* directory: $ cd ${CHROMIUM_CHECKOUT_DIR}/src $ git apply ${WEBVIEW_DELIVERY_DIR}/patchset/*.patch 4. In order to build the example code, run $ make efl_webview_example 5. In the out/Debug directory, run $ ./efl_webview_example to run the example application. 4) API After applying the patch set, the API header, including Doxygen-style documentation is found in: efl_webview/public/*, especially efl_webview/public/xwalk_view.h 5) Example application The documented code for the example application that is built in step 4 of the build instructions is found in efl_webview/examples/main.cc 6) Known Issues - Lifetime of the host application threads: In Chromium architecture, the UI process spins a number of support threads whose purpose is to serve requests coming from the renderer process. As soon as the xwalk_view is used, these threads are created and keep running for the lifetime of the application that uses the control. This lifetime could be optimized so that they are stopped when the control is not used any more. - EFL event integration Care was taken when it comes to implementing full keyboard and mouse event support. However, there might be remaining issues, especially with regards to touch events. - EFL theming integration Integration with Edje to control the rendering of form controls still needs to be developed. As of now, Chromium's default theming is always used. - Video playback support Chromium uses its own libffmpegsumo.so library for video playback. Currently, it always expects this library to be located in the same directory as the executable being run. - X window update on Tizen 2.1 On Tizen 2.1 mobile devices there is an issue with updating xwalk_view X window after GPU process swaps the buffers: X window is not updated in time, heavily affecting the user experience. At the moment, we have a temporary work around (forced X window update) however the correct solution should be found in future. - OpenGL backends By default, the Chromium code first tries to load a Desktop (GLX) implementation for it to use for accelerated compositing. While this works fine on the desktop, Tizen 2.1 Mobile only provides an EGL implementation. This means that in order to properly run applications on a device it is necessary to either pass "--use-gl=egl" to them or adjust the GL backend loading code for EGL to be preferred. The Tizen 2.1 emulator's EGL implementation; using Chromium's libosmesa.so and passing "--use-gl=osmesa" to applications is advised. 7) Authors People who have contributed to this release, in alphabetical order: Bhaumik, Rijubrata Hwang, Dongseong Kubo Da Costa, Raphael Pozdnyakov, Mikhail Röttsches, Dominik Shalamov, Alexander