|
|
|
Doug Turner |
|
Netscape Communications |
|
<dougt@netscape.com> |
|
|
|
|
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 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 |
|
|
|