# TODO List for XPCOM

Last updated: 25 March 1999
Suresh Duddi

Task | Priority | Owner | MileStone complete/Status
--- | --- | --- | ---

Move xpcom from using NR_*() functions (modules/libreg) to nsIRegistry (xpcom/src/nsRegistry.cpp)

- Mainly you want to change all the Platform*() functions in nsComponentManager.cpp
- Now we open/close the registry all the time. I want to keep the registry open all the time. That would get performance up.
- Platform*() functions use the NR_*Raw() functions in some places. I wonder if the nsRegistry has a equivalent. If not we need to create them.

Mostly, there is equivalence between NR_*() calls and nsRegistry calls.

P2

Nick Ambrose <nicka87@hotmail.com>

3/22/1999 started
3/27/1999 Patch submitted
3/30/1999 landing
DONE

RegisterFactory() and RegisterComponent(..persist=0) ignoring CONTRACTID. Needs Fix. | P1 | Nick Ambrose <nicka87@hotmail.com> | 4/6/1999 started 4/7/1999 Patch submitted 4/12/1999 Patch Checked in DONE
Startup components: Some components need to be created at startup. Have a framework for them. | P1 | Suresh Duddi |
nsIRegistry access via Javascript. | P1 |  | IDL of nsIRegistry will fix this says John Bandhauer
API changes: Remove all pathlist. XPCOM should support only paths. | P1 | Suresh Duddi | 4/2/1999 Checked in DONE
Fix xpcom from being initialized before main from static variables. | P1 | Suresh Duddi | 3/22/1999 Started. - checked in a fixed xpcom initialization sequence. - Now got to fix all code statically calling it. I know Netlib does. - 4/1/1999 Fixed netlib on unix from static intialization. WIN is left.

Path handling: Use nsFileSpec instead of file path names. Char * pathnames are not intl, and cannot be stored in the registry. Plus that wont support mac aliases.

- Possibly move autoreg out of xpcom

P1

Suresh Duddi
Robert Churchill

3/24/1999 started
Blocked on deciding which solution to pick.

Registry dump utility (regExport exists on windows) and about:registry (or) better yet an rdf data source for the registry. | P3 | Suresh Duddi | 4/5/1999 Fixed regExport to accurately dump the registry on win and unix. - regExport needs to be compiled on the mac.
Replace use of nsVector (PL_Vector) with nsISupportsArray | P3 |  |
PATH argument to NSRegisterSelf() and NSUnregisterSelf() to be a nsISupports | P1 |  |

Code Cleanup:

- Registry path strings in nsComponentManager.cpp #defined

P3

Nick Ambrose <nicka87@hotmail.com>

4/1/1999 started
4/5/1999 Patch submitted and checked in
DONE

Performance

- Cache commonly used registry keys

P1

Nick Ambrose <nicka87@hotmail.com>

4/1/1999 started
4/5/1999 Patch submitted and checked in
DONE

Factories: Use previously created factories for object creation instead of creating the factory everytime the object needs to be created.

- This is very tricky as the factory is owned by the component and when it decides to unload itself on a CanUnload() call, the factory will be released. Got to make sure that the component manager gets notified of this if it caches the factory.

P2

nsIAllocator: wrap it in a static api | P2 | John Bandhauer | 3/31/1999 started 4/2/1999 Check in DONE

## Documentation on XPCOM

- TODO List <this page>
- XPCOM main page : http://www.mozilla.org/projects/xpcom
- Code FAQ
- Component Registration