Gtk+ WebCore Project Documentation
Gtk+ WebCore consists of three different packages and a reference browser implementation:
Gtk+ WebCore Components
- JavaScriptCore, package containing KJS JavaScript interpreter.
- Package contains KJS component responsible for execuring JavaScripts embedded in HTML pages. Based on JavaScriptCore-146.1.
- NRCore rendering engine.
- Contains KHTML html rendering engine KWIQ -Qt adaptation layer and bridge classes for WebKit controls. Based on WebCore-146.1
- NRCit embeddable browser component
- Library which implements functionality needed to build an browser. Encapsulates the core HTML rendering engine.
- osb-browser reference browser.
- A simple web browser using interfaces provided in NRCit to render and display web pages.
Basic guidelines
The core of Gtk+ WebCore is the WebCore distribution by
Apple. The major goal of the port is to stay source level
compatible to the that code if possible. Otherwise we try to
remain compatible at "concept-level". This means that most of
the interfaces inside the code are from the code Apple has
released.
Quick build how-to
First, satisfy dependencies: glib, GDK, Pango, Gtk+,
libglade-2, libcurl.
Second, obtain source distribution (JavaScriptCore, NRCore,
NRCit, osb-browser). Untar each source package.
Third, build each package with following procedure:
./configure make && make install
Fourth, you can run the sample browser with command
osb-browser
Note: the Gtk+ WebCore library layout is subject to
change. It may be a good idea not to pollute your system with
unneccessery libraries. You can install the project to a
private directory, which can be later cleaned more easily than
system directories. One option is to install the project in
your home dir. This is accomplished by building the project
packages with following commands
PKG_CONFIG_PATH=$HOME/lib/pkgconfig ./configure --prefix=$HOME make && make install
TODO
While the KHTML rendering engine provides rich set of
features, building a usable browser component library
and browser is a big and timeconsuming task.
Following list
contains a few main areas where more work should and will be
done related to Gtk+ WebCore.
- Implement WebCore DOM API
- Fix crashes (crashes occur in day to day browsing)
- Define proper C++ API. The current is a quick rip-off of Apple WebKit
- Define proper C and Gtk+ API. The current is far too simplified.
- Http subsystem should be replaced with more powerful one and it should be integrated to the APIs
- Cross-platform compability improvements. Currently only tested platform is RH Linux 9
- Improve testability, other testing related work (code level, web standards' level)
- Implemented widgets are not working properly (size, fonts, focus etc. behaviour)
- Some widgets not implemented (textarea, file upload, canvas)
- Text rendering bugs (small caps not implemented, text measurement not right)
More documentation
More documentation including API's, architecture description
and motivational introduction will follow soon. Until that
time, if you are running in to problems or have questions,
please post them to the mailing list.