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 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).

Scheme

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:

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.


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

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:

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.