Docshell Documentation

The goal of this page is to serve as a dumping/organization ground for docshell docs. When someone finds out something, it should be added here in a reasonable way. By the time this gets unwieldy, hopefully we will have enough material for several actual docs on what docshell does and why.

Table of Contents

Some of these sections need writing, and we may need other sections... Feel free to rearrange as needed

  • About (What actually is docshell?)
  • [#interfaces Interfaces]
  • [#sh Session history] (needs work)
  • [#uriload URI loading] (needs work)
  • [#progress Progress notifications] (needs work)
  • [#bugs Bugs] (needs work)
  • [#plans Current Plans]

Interfaces Implemented by Docshell [#interfaces]

Docshell + webshell implement the following interfaces

Webshell:

Docshell:

In my view, nsIDocShellTree* and nsIWebShellContainer should all be merged into a single "tree node" interface. nsIWebShell should merge into nsIDocShell. nsILinkHandler, not sure. nsIContentViewerContainer and nsIScriptGlobalObjectOwner, do we really need those? nsIRefreshURI is probably something to merge into nsIDocShell (or even nsIWebNavigation?). nsIEditorDocshell also doesn't really need to be a separate interface.

Then again, do we want to just dump all sorts of stuff onto nsIDocShell? Not sure about that. Maybe we should look at who uses nsIDocShell and these other interfaces and why?

Bugs that could need some Docshell cleanup [#bugs]

Current plans for docshell [#plans]

nsDocLoaderImpl (nsDocLoader.cpp will be merged into nsDocShell; or rather, nsDocShell will become a subclass of nsDocLoaderImpl (no bug filed yet)

nsWebShell should be merged into nsDocShell

bug 261086 - docshell does not need quite as many things in its GetInterface implementation