- Introduction
- Architecture
- 2.1 Main components
- 2.2 Browser User Interface
- 2.3 Browser Engine
- 2.4 Engine Abstraction Layer
- 2.5 Bookmark Manager
- Browser Application
- Mozilla Browser Engine
1. Introduction
The Mozilla based browser for maemo is under development and is provided here for maemo developers.
This prerelease provides 3rd party developers an opportunity to develop extensions for the Mozilla based browser for maemo and community members the opportunity to contribute to its development.
2. Architecture
2.1 Main components
Mozilla based browser for maemo application consists of three main components:
- Browser Application User Interface (Browser UI),
- Browser Engine (Engine) and
- Bookmark Manager (BM)
Browser UI interacts with Engine via Engine Abstraction Layer (EAL) library API. This library provides an abstract interface to the browsing engine implementation and hides Engine specific details from the Browser UI.
Browser UI and Engine together represent Browser Application (Browser).
BM is a standalone application that interacts with the Browser UI and external applications via D-BUS interface.
2.2 Browser User Interface
Browser UI components are developed by Nokia and are available for download from http://browser.garage.maemo.org/.
It makes use of GTK with Hildon support (User Interface framework for mobile devices).
However Hildon support can be disabled at compile time for use with other GTK platforms.
2.3 Browser Engine
Engine is a core component that provides most of the functionality needed to browse the Internet today.
At the time of this writing, three browser engines are compatible with the Browser UI:
- Opera Engine, included in Nokia 770 and Nokia N800 devices as part of Internet Tablet OS 2005, 2006, and 2007 editions.
- Mozilla Engine which can be used in Nokia N800 device now. It is delivered together with the development version of Mozilla based browser for maemo.
- WebCore Engine is a community driven implementation of GTK WebCore for maemo platform.
All of these engines can be used with the same Browser UI via the EAL.
2.4 Engine Abstraction Layer
EAL is an abstract interface used by the Browser UI to communicate with Engine. EAL is not dependent on any engine implementation. Different browser engines can be used by the same the Browser UI once they provide an adaptation library that implements the EAL interface. The EAL library is an open source component developed by Nokia. It is available under MPL license at maemo.org. The library is written in C, using the GObject framework from GLib to provide an object oriented interface.
2.5 Bookmark Manager
BM is a standalone application that provides support for storing, previewing and retrieving bookmarks. BM uses C-based D-BUS interface to interact with the Browser UI.
BM is based on GTK and Hildon frameworks and stores bookmarks as an XBEL file.
3. Browser Application
3.1 Application interface
The Browser provides D-BUS interfaces to enable 3rd party applications to communicate with it.
This interface is available as a part of MPL library developed by Nokia and is available at maemo.org.
3rd party developers can use this interface to control Browser and ask it to load URLs.
3.2 Application extensibility
Currently there are three ways for 3rd party developers to extend the Browser.
- EAL – 3rd party developers may develop a new Engine adaptation library and use it with the Browser UI binary.
- NPAPI (Netscape Plug-in API) - rd party developers may create browser plug-ins to support other media content. Currently WebCore engine does not support this.
- XPCOM (Cross Platform Component Object Model) - 3rd party developers may modify and enhance web page layout and add support for new media formats by writing XPCOM components. At the time of this writing, XPCOM components are only supported by the Mozilla engine.
4. Mozilla Browser Engine
4.1 Mozilla Engine Overview
The Mozilla based browser for maemo uses Mozilla Engine (aka the Gecko 1.9 layout engine) being developed at mozilla.org for inclusion in Firefox 3.0.
Browser Engine makes use of most of the features of the underlying software platform, including GTK+.
GtkMozEmbed is used to simplify integration with the GTK based Browser UI.
4.2 Supported web standards
In today's web, where important WEB2.0 and social networking sites developed using AJAX principles appear daily, Mozilla Engine will provide compatibility with the latest web standards. A strong open source community and support from commercial vendors enable early implementationn of emerging web standards and quick adaptation to emerging problems and trends.
Standard | Firefox 2.0 |
Mozilla based browser for maemo |
HTML | HTML 4.01 | HTML 4.01 |
XHTML | XHTML 1.0/1.1 | XHTML 1.0/1.1 |
CSS |
CSS 1.X/2.X and parts of CSS 3.X | CSS 1.X/2.X and parts of CSS 3.X |
DOM |
DOM 1.X/2.X and parts of DOM 3.X | DOM 1.X/2.X and parts of DOM 3.X |
JavaScript |
JavaScript 1.7 | JavaScript 1.7 |
AJAX |
YES | YES |
XML |
XML 1.0 | XML 1.0 |
XSLT |
XSLT 1.0 | XSLT 1.0 |
XPath |
XPath 1.0 | XPath 1.0 |
Modal dialogs |
YES |
YES |
Mouse-over events | YES | YES |
Hover styles | YES | YES |
Tool tips | YES | YES |
Flash 9 | YES | YES |
Plug-in installation |
NPAPI, XPCOM, OJI |
NPAPI, XPCOM |
Custom x.509 certificates |
YES |
YES |
SVG |
a subset of SVG 1.1 |
NO |
XUL |
YES |
NO |
- SVG support is omitted from Gtkmozembed because it doesn't perform well enough to be useful.
- XUL is not included in Gtkmozembed as a size optimization.
Most of the latest desktop browser engines provide sufficient support for the modern web services. However, Mozilla often delivers support for emerging web standards sooner. For example, Mozilla supports JavaScript 1.7 while most other engines only support JavaScript 1.5.
At the same time the Mozilla build used by Mozilla based browser for maemo has some platform specific limitations: currently XUL support is disabled for the sake of better performance.
4.3 Mozilla Engine extensibility
Mozilla Engine Framework is based on Cross Platform Component Object Model (XPCOM) concept. XPCOM components can be implemented in JavaScript or C++. There are components belonging to such core parts of Mozilla Framework like Gecko Layout Engine and Necko Network Library, while some of the components are parts of Firefox UI or introduced as the 3rd party extensions and add-ons. There are many components and add-ons developed by the Mozilla community, including commercial companies, individuals, and open groups. Most of these components can be used with Mozilla based Internet Tablet Browser though there is one limitation currently on XUL usage. Some of the components which can be easily ported are, for example, Greasemonkey (an extension for Firefox that allows arbitrary customization of web page look, feel, and behavior) and odfReader (Firefox extension that allows of viewing Open Document format files).
Mozilla Engine extensibility is not limited to XPCOM add-ons. Engine also supports the Netscape Plug-in API.
4.4 Future standards support
Upcoming versions of Mozilla framework and Gecko layout engine provide support for new web technologies and standards.Some of the features, planned to be available in releases of future mozilla.org products are:
- JavaScript 2 - based on new ECMA-262 edition 4.
- SVG 1.1 - will include such features as filters, text path element and foreign objects.
- XUL2D - 2D graphics capabilities to the XUL language.
- XBL2 - future evolution of XML-based UI development frameworks.
- WHATWG Web Applications - Web app deployment and capability improvements including client-local storage and off-line operation mode.
Please note that these are merely items planned for inclusion in the Mozilla framework and Gecko, to which Nokia has no responsibility and they may not be available for the Mozilla based browser for maemo. For planned maemo features, please see the maemo roadmap.