Doug Turner | |
Netscape Communications | |
<dougt@netscape.com> |
What we are going to talk about.
Definition of the GRE. | |
GRE’s importance. | |
Deciding to use it. | |
How to use it. | |
Current Issues. |
The Gecko Runtime Environment. | |
Plainly put, the GRE is the minimum set of “stuff’ required to embed the Gecko browsing engine. | |
Its goal is to allow multiple applications to share the same Gecko installation. |
Gecko application suites. | ||
Anyone that wants to leverage Gecko’s functionality. | ||
Small net utilities. | ||
A simple “About Box” using Gecko. | ||
Full blown XUL apps. |
Type of Stuff that makes up the GRE | ||
XPCOM, Necko, Embedding Support, Profile, preferences, i18n, accessibility, DOM, Layout, cookies, plugin support. | ||
Type of Stuff that’s not. | ||
XUL (directly), wallet, mail, typeaheadfind. |
Application components directory. | |
Custom resources and chrome. |
These copies can remove or add “stuff” depending on their requirements. | |
Applications may hide their copy of the GRE. | |
Effectively, that is what we have been doing. |
A GRE version is atomic. | |
No functional updates are allowed. | |
Updates should create a new version of the GRE. |
Your application requires NSPR and XPCOM Glue. | |
You don’t link against the GRE libraries. | |
Your application must decide what versions of the GRE to support. | |
Add custom components, chrome, etc. to your application’s directory. |
XPCOM Glue and Simple GRE Startup
XPCOM Glue is a layer between an application or component and the XPCOM library. | ||
Simple GRE Startup | ||
Built in the XPCOM glue library. | ||
Simple GRE Version matching support | ||
What the Mozilla Client uses. | ||
void main(void) | |
{ | |
GRE_Startup(); | |
//… | |
GRE_Shutdown(); | |
} | |
That easy – well, almost. |
At startup, Mozilla calls GRE_Startup() to | ||
Find a GRE installation. | ||
Load the XPCOM library. | ||
At shutdown, Mozilla calls GRE_Shutdown() to clean up. |
Current Process Directory | ||
USE_LOCAL_GRE=1 environment variable flag (CWD is implied. Used for testing.) | ||
GRE Configuration files | ||
~/gre.config | ||
File pointed at by MOZ_GRE_CONF | ||
/etc/gre.conf | ||
Windows registry location | ||
HKEY_CURRENT_USER\Software\mozilla.org\GRE |
[1.3b] | |
GRE_PATH=/home/dougt/gre/1.3b/ | |
[1.4a] | |
GRE_PATH=/home/dougt/gre/1.4a/ | |
[1.4b] | |
GRE_PATH=/home/dougt/gre/1.4b/ |
Mozilla.org has a GRE installer. | |
It can be redistributed with your application. | |
Your installer can check for its existence and install the GRE if it doesn’t exists. | |
GRE Installations are reference counted. | |
GRE in Linux Distributions coming soon. |
Hard to use Gecko | ||
Knowledge of too many subsystems are required. | ||
No boilerplate applications frameworks available. | ||
Requirement of NSPR | ||
Not enough frozen interface. | ||
Support of res and chrome files in the GRE. | ||
Nightly build support. | ||
Library dependencies. | ||
Application developer should begin to think in terms of the GRE | ||
Work continues to be done to improve the GRE story | ||
Q&A? | ||
Follow up question: | ||
XPCOM Newsgroup | ||