Compare Revisions

Document Loading - From Load Start to Finding a Handler

Revision 953:

Revision 953 by SamB on

Revision 954:

Revision 954 by Elemecca on

Title:
Document Loading - From Load Start to Finding a Handler
Document Loading - From Load Start to Finding a Handler
Slug:
Document_Loading_-_From_Load_Start_to_Finding_a_Handler
Document_Loading_-_From_Load_Start_to_Finding_a_Handler
Tags:
Outdated_articles, Uriloader, DocShell
Outdated_articles, Uriloader, DocShell
Content:

Revision 953
Revision 954
n100      </map> <img alt="Diagram showing relationships between nsDon100      </map><img alt="Diagram showing relationships between nsDoc
>cShell, nsURILoader, nsDocumentOpenInfo, etc." class=" internal" >Shell, nsURILoader, nsDocumentOpenInfo, etc." class="internal" sr
>src="/@api/deki/files/919/=Uri-load-start.gif" usemap="#loadDiagr>c="/@api/deki/files/919/=Uri-load-start.gif" usemap="#loadDiagram
>amMap">>Map">
n126          <code>nsURILoader::OpenURI</code> gets a channel to open126          <code>nsURILoader::OpenURI</code> gets a channel to ope
>n, a boolean indicating whether this load is the result of a link>n, a boolean indicating whether this load is the result of a link
> click, and an <code>nsISupports</code> "window context" (the doc> click, and an <code>nsISupports</code> "window context" (the doc
>shell triggering the load, actually, but in drag and heavy makeup>shell triggering the load, actually, but in drag and heavy makeup
>).>). It immediately hands off to <code>nsURILoader::OpenChannel</co
 >de>.
n131          <code>nsURILoader::OpenURI</code> notifies the <code>nsn131          <code>nsURILoader::OpenChannel</code> notifies the <cod
>IURIContentListener</code> hanging off the window context, if any>e>nsIURIContentListener</code> hanging off the window context, if
>, of the start of the load; this gives embedders a chance to abor> any, of the start of the load; this gives embedders a chance to 
>t the load if this URI type is something they want to handle in t>abort the load if this URI type is something they want to handle 
>he embedding app. If the load is not aborted, we create an <code>>in the embedding app. If the load is not aborted, we create an <c
>nsDocumentOpenInfo</code> object for this load, passing it the "t>ode>nsDocumentOpenInfo</code> object for this load, passing it th
>his is a link click" boolean and the window context.>e "this is a link click" boolean and the window context. We then 
 >set the channel's <code>nsILoadGroup</code> to the one from the w
 >indow context.
n136          <code>nsDocumentOpenInfo::Open</code> is passed the chan136          <code>nsDocumentOpenInfo::Prepare</code> is passed the 
>nnel to open. It calls <code>GetInterface</code> on the window co>channel to open. It calls <code>GetInterface</code> on the window
>ntext to get and save that context's <code>nsIURIContentListener<> context to get and save that context's <code>nsIURIContentListen
>/code>.>er</code>.
t141          <code>nsDocumentOpenInfo</code> just opens the channel,t141          <code>OpenChannel</code> returns to <code>OpenURI</code
> setting itself as the stream listener.>> which just opens the channel, setting the <code>nsDocumentOpenI
 >nfo</code> as the stream listener.

Back to History