You are currently viewing a snapshot of taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to, please file a bug.

Testing the Mozilla Layout Engine
(Chris Toshok and Nisheeth Ranjan)
Last Updated: 8/10/98

What we are trying to do

This project's aim is to work with the net to design and implement a set of APIs that lets us test Mozilla's layout engine. Till now, the browsing rectangle has been this black box with no way to programatically see what the pixels inside it represent. We want to allow any external process to query Mozilla and access layout information for the currently loaded document.

Whats happened till now

We have an initial design and implementation of the "Layout Probe API" checked into mozilla. This API lets us "probe" the layout engine to get information about the current document. The header file (mozilla/lib/layout/layprobe.h) and the implementation (mozilla/lib/layout/layprobe.c) are viewable on the source file viewer on

The discussion on how best to architect this project for Mozilla is in process.  Bill Law's document describes one way of exposing the Layout Probe API to an external process and should provide useful context for this discussion.

Another architectural approach that is in consideration is as follows.  Implement a "LoadDLL(DLL Path)" remote command in each FE. This command creates an XPCOM interface to the Layout Probe API, loads the specified DLL into mozilla's process space, and calls a predefined entry point in the DLL with the XPCOM interface as an argument.  The providers of the DLL can now use the XPCOM interface to call into the Layout Probe API.

What is being planned

We plan to use the mozilla layout newsgroup for further discussion about this project.  Please feel free to contribute.  Thanks.

List of current participants

Tim Anderson (
Ori Kravitz (
Bill Law (