You are currently viewing a snapshot of www.mozilla.org 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 www.mozilla.org, please file a bug.



Interface Freeze Status

Author: Chak Nanga

This document was started to mainly keep track of the list of interfaces as they're going thru' various phases[review->frozen etc]. It evolved into this current form based on Ricks Potts' interface dependency work and Doug Turner's list of XPCOM interfaces he wants to freeze and Adam Lock's initial list.

While it does not attempt to list the status of all the Mozilla interfaces, it does list all of the currently frozen interfaces and the status/issues associated with some key interfaces w.r.t Mozilla embedding.

All the interfaces/components/services which are marked as FROZEN below follow the interface freezing guidelines outlined here . If you are thinking of marking an interface as FROZEN it must follow those guidelines in addition to the usual API review process.

Interface Name Owner Comments/Issue(s) Current Status
XPCOM Related dougt All XPCOM interfaces to be reviewed by dougt
Core XPCOM
nsISupports 98281 FROZEN
nsIFactory 99144 FROZEN
nsIComponentManager Needed to create an instance of the WebBrowser

98553 needs to be fixed
  • Requires: nsIFactory, nsIFile, nsIEnumerator
  • This IDL file also requires nsComponentManagerUtils.h
  • To Do:
    • Can the #include of nsIFactory be changed to a forward declaration?
    • nsComponentManagerUtils.h needs to be looked at! It exposes alot...
FROZEN
nsIServiceManager Needed to access various services such as nsIMemory etc.
99147 needs to be fixed
Currently a C++ class. May need to be in IDL.
  • Requires: nsCOMPtr
  • To Do:
    • Can the #include for "nsIComponentManager.h" be removed?
    • Hopefully, this header file can be split into an IDL file for the definition of nsIServiceManager and a header file for all of the nsIServiceManager utility stuff...
    • nsServiceManager::xxx' Needs to be frozen for plugins ect.
    • This interface will require alot of work!
FROZEN
nsIMemory
99151
  • This interface is required for embeddors to release memory allocated for [out] parameters from other interfaces.
  • Should the static 'nsMemory::xxx' versions of this interface be exposed too? (NO! dougt)
FROZEN
nsIShutdownListener Remove this interface 99152 ) DONE
nsIModule 99154 FROZEN
nsIClassInfo 99156 , 99158 FROZEN
nsIInterfaceRequestor
  • To Do:
    • Currently includes nsCOMPtr.h in the .idl file. This needs to be removed. ( 99134 )
FROZEN
nsISimpleEnumerator FROZEN
nsIWeakReference
  • To Do:
    • Currently includes nsCOMPtr.h in the .idl file. This needs to be removed. ( 99137 )
    • Do we need to freeze/expose nsSupportsWeakReference class?
FROZEN
XPCOM - File Location ( 99160 )
nsIFile
  • Requires: nsISimpleEnumerator
  • To Do
    • The implementation of NS_GetSpecialDirectory(...) should probably be moved out of this IDL file.
nsILocalFile
  • Requires: nsIFile, NSPR I/O
nsIProperties FROZEN
nsIDirectoryService
  • Requires: nsIDirectoryServiceProvider
FROZEN
nsIDirectoryServiceProvider
  • Requires: nsIFile
  • Should the #include of nsIFile be changed to a forward declaration?
FROZEN
XPCOM - DS
nsISimpleEnumerator Needs to be broken out into its own IDL file (currently it lives in nsIEnumerator.idl) FROZEN
nsIObserver ( 99163 )
[ccarlen]:The topics should not be Unicode strings. They should be c-strings or atoms
FROZEN
XPCOM - Input/Output
nsIOutputStream
nsIInputStream
  • Requires: nothing
  • To Do
    • Make sure that error codes are exposed somewhere!
    • There is currently an unused idl file called nsIInputStream2.idl. We might want to remove this so that the name nsIInputStream2 is available for future versions ot *this* interface.
XPCOM - Structs
nsID 99166 FROZEN
nsIID 99166 FROZEN
APIs/Other Interfaces
nsIProfile FROZEN
nsISelection FROZEN
nsIGlobalHistory FROZEN
nsIHistoryEntry
radha
100993

  • Requires: nsIURI
  • To Do:
  • Change the #include of nsIURI.idl into a forward declaration.
FROZEN
nsISHistory
radha
100993
  • Requires: nsISHistoryListener, nsIHistoryEntry, nsISimpleEnumerator
  • To Do:
  • Remove #include for nsIFactory
  • Change #includes to forward declarations for nsIHistoryEntry and nsIHistoryListener
FROZEN
NS_InitEmbedding()
adamlock
99181
  • Requires: nsILocalFile, nsIDirectoryServiceProvider
FROZEN
NS_TermEmbedding()
adamlock
99181 FROZEN
nsIWebBrowser
adamlock
99181
  • Requires: nsIWebBrowserChrome, nsIInterfaceRequestor, nsIWeakReference, nsIDOMWindow, nsIURIContentListener
  • To Do:
    • Remove forward declaration of nsIInterfaceRequestor
FROZEN
nsIWebProgress
rpotts
99639
  • Requires: nsIWebProgressListener, nsIDOMWindow
nsIWebProgressListener
rpotts
99639
  • Requires: nsIWebProgress, nsIRequest, nsIURI
  • To Do
  • Get rid of nsIChannel forward declaration
  • Split out state flags into 'who' and 'what' arguments for OnStateChange(...)
  • Combine OnSecurityChange(...) with OnStateChange(...)
  • Define or remove OnLocationChange...
nsIContextMenuListener
adamlock
99181
To be reviewed by owner
FROZEN
nsITooltipListener & nsITooltipTextProvider
adamlock
99181 FROZEN
nsIEmbeddingSiteWindow
adamlock
99181
  • Requires: Nothing
FROZEN
nsIWebBrowserSetup
adamlock
99181

Documentation for setProperty needs clarification on what happens for unknown options
FROZEN
nsIWebBrowserChrome
danm
99617
  • Requires: nsIWebBrowser
  • To Do
    • Remove forward declaration of nsIDocShellTreeItem
  • Create/DestroyBrowserWindow(...) be removed in favor of the new nsIWindowCreator interface
  • Need to define the semantics of showAsModal/exitModalEventLoop()
Need to document what the embeddor must do when the 'chromeFlags' attribute is modified (ie. wehy it is not just read-only)
nsIWebBrowserPersist
adamlock
99642
Being rewritten
nsIPrefService
bnesse
99611
Real close to freezing. May require some changes due to a couple of recent bugs.
FROZEN
nsIPrefBranch
bnesse
99611
Real close to freezing. May require some changes due to a couple of recent bugs.
FROZEN
nsIWebBrowserFind
ccarlen
99613
Not reviewed, frame issues sorted out?
nsIPromptService
ccarlen
99615
Need to determine if we need a flag to the alert call to specify whether the alert() is for warning vs. error
nsIWindowWatcher
danm
99618
This one's ready to freeze. There was some question of adding an ability to get z-level enumerators, but danm's arguing that's inappropriate.
nsIWebBrowserPrint
dcone
99619
nsIPrint* interfaces need to be reviewed
nsIFontPackageService
ftang/
yokoyama
99621
We do not have any embedding samples using this. So, i'm not sure whether or not these are ready to go
nsIFontPackageHandler
ftang/
yokoyama
99621
We do not have any embedding samples using this. So, i'm not sure whether or not these are ready to go
nsIHelperAppLauncherDialog
law
99622
To be reviewed by owner
nsIClipboardCommands
pinkerton
99623
To be reviewed by owner
FROZEN
nsISHistoryListener
radha
99624
Requires : nsIURI
FROZEN
nsIWebNavigation
rpotts
99625
  • Requires: nsIInputStream, nsIURI, nsIDOMDocument, nsISHistory
  • To Do
    • Need to rework load flags...
    • Need to rework LoadURI(...). Add support for post-data, extra headers and referer
nsIWebBrowserFocus
saari
99626
Focus issues in embedding samples may necessitate changes to this interface
nsIURIContentListener 99627
  • Requires: nsIURI, nsIProtocolHandler, nsIRequest, nsIStreamListener,
  • To Do
    • Should *not* #include nsIURILoader.idl
    • Do something with nsIURILoadCommand
    • Can getProtocolHandler be removed? It is not implemented anywhere in the codebase
DOM APIs
Core DOM Interfaces:

nsIDOMAttr
nsIDOMCDATASection
nsIDOMCharacterData
nsIDOMComment
nsIDOMDOMException
nsIDOMDOMImplementation
nsIDOMDocument
nsIDOMDocumentFragment
nsIDOMDocumentType
nsIDOMElement
nsIDOMEntity
nsIDOMEntityReference
nsIDOMNamedNodeMap
nsIDOMNode
nsIDOMNodeList
nsIDOMNotation
nsIDOMProcessingInstruction
nsIDOMText
jst/chak
110795
FROZEN
DOM Event Interfaces:

nsIDOMDocumentEvent
nsIDOMEvent
nsIDOMEventListener
nsIDOMEventTarget

joki/chak
110798 FROZEN
Networking APIs
nsIProtocolHandler
  • Requires: nsIURI, nsIChannel
  • To Do
    • This should *not* be a public interface (if at all possible)
    • This interface is *only* pulled in by nsIURIContentListener::getProtocolHandler(...)
nsIChannel
nsIStreamListener
  • Requires: nsIRequestObserver, nsIRequest, nsIInputStream
  • To Do
    • Break nsIStreamListener out into its own idl file. We don't want to expose Async, Proxy or Tee listeners...
nsIRequestObserver
  • Requires: nsIRequest
nsIURI
  • Requires: nothing
  • To Do
    • Need to address/document what the 'string' attriburtes actually ARE!! UTF-8 or URL-encoded WRT some charset.
The link to http://www.w3.org/Addressing/URI/URI_Overview.html is broken.
nsIRequest
  • Requires: nsILoadGroup
  • To Do
    • Should notificationCallbacks be promoted from nsIChannel into nsIRequest? This would allow arbitrary requests to provide contextual information up the chain...
nsILoadGroup
  • Requires: nsIRequest, nsIRequestObserver, nsIInterfaceRequestor, nsISimpleEnumerator
  • To Do
    • Need to define the symantics of adding requests to a loadgroup... what are the effects on 'load flags' etc
Strings
nsAString
scc
nsAReadableString
scc
  • Requires: nsAString
nsAWritableString scc
  • Requires: nsAString

APIs embedding clients are using ...

Interface Contacts (for review meeting) Module Owner Bug(s) Comments
nsIBaseWindow Dan Matejka, Adam Lock, Rick Potts Rod Spears
nsIFilePicker Rod Spears
nsIAppShell Rod Spears
nsIWidget Rod Spears
nsIEventSink Rod Spears
nsIPrintSettings Rod Spears Kevin McCluskey
nsICommandManager Mike Judge Adam Lock
nsICommandParams Mike Judge Adam Lock
nsIEmbeddingSiteWindow2 Adam Lock
nsIProgressDialog Bill Law, Blake Ross Adam Lock
nsIPromptService Conrad Carlen Adam Lock
nsIWebBrowserFocus Chris Saari Adam Lock
nsIWebBrowserChromeFocus Adam Lock
nsIWebBrowserPersist Adam Lock
nsIWebNavigation Rick Potts 99625
nsIDocShell May be used by embedding customers, but, it exposes too much info so we need to extract what they're using and put that into a frozen iface or set of ifaces
nsIDocShellTreeItem
nsIScrollable
nsIContentViewer
nsIMarkupDocumentViewer
nsIDocumentLoaderFactory
nsIContent (nsIContent.h) Johnny Stenback jst> there's no way we can freeze those
nsIDocument (nsIDocument.h) Johnny Stenback jst> there's no way we can freeze those
nsIDocumentEncoder (nsIDocumentEncoder.h) Johnny Stenback
nsIDOMCSSStyleSheet Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMCSSStyleDeclaration Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMDocumentFragment Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMDocumentRange Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMDocumentStyle Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMElement Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMEventReceiver Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLAppletElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLAreaElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLBaseElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLBodyElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLCollection Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLDocument Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLFrameElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLIFrameElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLImageElement Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMHTMLInputElement Peter Van der Beken Johnny Stenback 161166 jst> contains an error that needs to be fixed before we can freeze it (the size attribute is of the wrong type)
nsIDOMMouseEvent Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMMouseListener (nsIDOMMouseListener.h) Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMRange Peter Van der Beken Johnny Stenback 161166 jst> should be freezable as is, but that needs to be verified
nsIDOMStyleSheet Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMStyleSheetList Peter Van der Beken Johnny Stenback jst> should be freezable as is, but that needs to be verified
nsIDOMWindowInternal Peter Van der Beken Johnny Stenback valeski> May be used by embedding customers, but, it exposes too much info so we need to extract what they're using and put that into a frozen iface or set of ifaces
jst> should be freezable as is, but that needs to be verified
nsIDOMNSDocument Peter Van der Beken Johnny Stenback jst> need some thought
nsIDOMNSHTMLInputElement Peter Van der Beken Johnny Stenback jst> need some thought
nsIDOMNSHTMLTextAreaElement Peter Van der Beken Johnny Stenback jst> need some thought
nsIEventStateManager (nsIEventStateManager.h) Johnny Stenback jst> I'm doubtful about nsIEventStateManager too
nsIScriptContext (nsIScriptContext.h) Johnny Stenback jst> not to mention the nsIScript* interfaces (doubtful)
nsIScriptGlobalObject (nsIScriptGlobalObject.h) Johnny Stenback jst> not to mention the nsIScript* interfaces (doubtful)
nsIScriptGlobalObjectOwner Johnny Stenback jst> not to mention the nsIScript* interfaces (doubtful)
nsIOverrideDropSite (nsIDragDropOverride) Mike Pinkerton (Editor?) Johnny Stenback
nsISelectionController Mike Judge (Editor?) Johnny Stenback
nsISelectionDisplay Mike Judge (Editor?) Johnny Stenback
nsIFrameSelection Mike Judge Chris Karnaze mjudge> should NOT be frozen. Any API that contains these interfaces should also not be frozen
nsIImageFrame (nsIIMageFrame.h) Chris Karnaze mjudge> should NOT be frozen. Any API that contains these interfaces should also not be frozen
nsIStyleContext (nsIStyleContext.h) Chris Karnaze
nsIPresContext (nsIPresContext.h) Chris Karnaze mjudge> should NOT be frozen. Any API that contains these interfaces should also not be frozen
nsIPresShell (nsIPresShell.h) Chris Karnaze valeski> May be used by embedding customers, but, it exposes too much info so we need to extract what they're using and put that into a frozen iface or set of ifaces
mjudge> should NOT be frozen. Any API that contains these interfaces should also not be frozen
nsIAtom Doug Turner 162114 dougt> may not make 1.2
nsIAtomService 162114
nsICategoryManager 154047 Here since it is also included in META bug 157137
nsIEventQueue Doug Turner dougt> I do not think that we want to expose our threading model.
Can use the nsIScriptableTimer instead.
nsIEventQueueService Doug Turner dougt> I do not think that we want to expose our threading model.
Can use the nsIScriptableTimer instead.
nsIProxyObjectManager Doug Turner dougt> I do not think that we want to expose our threading model.
Can use the nsIScriptableTimer instead.
nsISupportsArray Doug Turner 162115 jjmata> Don't freeze! Steer people away from it & (and to a new intfc.?) See bug.
dougt> may not make 1.2
nsIGenericFactory (nsIGenericFactory.h) Doug Turner dougt> Frozen via glue library
nsIProperties Doug Turner 162114 jjmata> Frozen already?
nsITimerCallback (nsITimerCallback.h) Doug Turner 157136 dougt> Use nsIScriptableTimer instead
nsISupportsWString 157624 alecf> nsISupportsWString has become nsISupportsString, and nsISupportsString became nsISupportsCString
nsIMIMEInfo Darin Fisher 162116 jjmata> See bug. Negative feelings towards freezing.
darin> not mature, needs significant string-fu revision before freezing (what about nsIMIMEService?)
nsIHttpChannel Darin Fisher 157133 darin> mature, nearly ready to be frozen
nsIFileChannel Darin Fisher 157135 darin> somewhat mature, probably needs slight modifications before being frozen
nsIHttpProtocolHandler Darin Fisher 157133? darin> mature, nearly ready to be frozen
nsICacheService Darin Fisher, Doug Turner, Gordon Sheridan 162116 jjmata> See bug. Would have to freeze all Cache intfcs.
darin> not mature, would require freezing ALL cache interfaces (i.e., nsICacheEntryDescriptor, nsICacheSession, nsICacheVisitor, nsICacheEntryInfo)
nsIIOService Darin Fisher, Doug Turner, Gordon Sheridan 157131 darin> mature, nearly ready to be frozen
nsICookieService Darin Fisher, Doug Turner, Gordon Sheridan 162116 darin> somewhat mature, probably needs slight modifications before being frozen
nsIPasswordManager Darin Fisher, Doug Turner, Gordon Sheridan darin> somewhat mature, probably needs slight modifications before being frozen
nsIDownloadObserver (nsIDownloader) Darin Fisher, Doug Turner, Gordon Sheridan darin> somewhat mature, probably needs slight modifications before being frozen
nsITransport Darin Fisher, Doug Turner, Gordon Sheridan darin> not mature, should be avoided
nsIProxy 152663 Here since it is also included in META bug 157137
nsIProxiedProtocolHandler 152663 Here since it is also included in META bug 157137
nsIWalletService Steve Morse
nsIContentHandler Scott MacGregor
nsIWebProgressListener Rick Potts Scott MacGregor
nsIExternalHelperAppService Scott MacGregor
nsIXPIListener (nsIXPINotifier) Dan Veditz
nsIXPIDialogService Dan Veditz
nsIXPIProgressDialog Dan Veditz
nsIPref Brian Nesse Deprecated? Why freeze if we want to move people off of it?
nsIPluginManager Andrew Volkov
nsPIPluginHost Andrew Volkov nsP* indicates that an interface is explicity Private (sort of like "Internal"... probably synonomous actually. "P" is preferred). So, anything w/ "nsP" or "*Internal*" in it, shouldn't be frozen. we need to resolve how to get folks off those interfaces
nsICharsetAlias (nsICharsetAlias.h) Yung-Fong Tang
nsIDocCharset Yung-Fong Tang
nsIFontPackageService Yung-Fong Tang
nsIFontList
nsIImage (nsIImage.h)
gfxIImageFrame
imgIContainer pavlov@netscape.com
imgIContainerObserver pavlov@netscape.com
imgIRequest pavlov@netscape.com
nsIPermissionManager
nsISecurityManagerComponent
nsICrlEntry (nsIX509CertDB) David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIX509Cert David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIX509CertDB David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIX509CertValidity (nsIX509Cert) David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIASN1Object (nsIX509Cert.idl) David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIASN1Sequence (nsIX509Cert.idl) David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIASN1Tree David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsINSSDialogs David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsICertificateDialogs (nsINSSDialogs) David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsISecurityWarningDialogs David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIBadCertListener David Drinan, Javi Delgadillo, Stephane Saux Kai Engert
nsIProfileInternal Conrad Carlen
?nsIXULChromeRegistry
nsIChromeRegistry Chris Waterson
nsIEditor jfrancis, glazman, kin Akkana Peck Going away
nsIEditingSession sfraser Akkana Peck
nsIHTMLEditor jfrancis, glazman, kin Akkana Peck
nsIPlaintextEditor jfrancis, glazman, kin Akkana Peck
nsISpellChecker (nsISpellChecker.h) kin Akkana Peck
nsITextServicesDocument (nsITextServicesDocument.h) kin Akkana Peck
nsVoidArray dougt> These are concrete classes which should not be use by any embedders
nsStringArray dougt> These are concrete classes which should not be use by any embedders
nsString dougt> Frozen via glue library
nsAutoString dougt> Frozen via glue library
nsCOMPtr dougt> Frozen via glue library
nsRepeater