|
|
Line 1: |
Line 1: |
| The XPCOM bootstrap process is overly complicated and time-consuming. I'd like to take the following actions to simplify it: | | The XPCOM bootstrap process is overly complicated and time-consuming. I'd like to take the following actions to simplify it: |
|
| |
|
| == Unification ==
| | This work is complete, NS_InitEmbedding has been removed. |
| | |
| Unify the XPCOM bootstrap code so that all clients either use XRE_main or XRE_InitEmbedding, and remove NS_InitEmbedding and NS_InitXPCOM
| |
| | |
| There are currently three ways for embedders to use the Mozilla plaform:
| |
| | |
| * Call NS_InitXPCOM directly
| |
| * Call XRE_InitEmbedding
| |
| * Call NS_InitEmbedding and link the static embedding library
| |
| | |
| Of these, only XRE_InitEmbedding is recommended. The multiple codepaths in the current codebase mean that embedders who don't go through XRE_InitEmbedding often get strange bugs.
| |
| | |
| NS_InitXPCOM* was considered a frozen API, but is not used by components or extensions. I think we should remove it in the 1.9.2 cycle irrespective of whether we change other frozen APIs and make a clean break to mozilla 2.
| |
| | |
| This will involve combining xpcom/build and toolkit/xre in some way. The exact location and dependencies are not yet designed.
| |
| | |
| Migration: many of our in-tree test programs currently use NS_InitXPCOM. They must be migrated to XRE_InitEmbedding. This migration is not hard.
| |
|
| |
|
| == State Management == | | == State Management == |