Switch context back to being nsISupports, but make it clear that it's expected

to be an nsIDOMNode or nsIDOMWindow.  Bug 252027, r=mvl, sr=shaver
This commit is contained in:
bzbarsky%mit.edu 2004-07-27 17:15:53 +00:00
parent 40ca95b00d
commit 02d0d94b73
16 changed files with 117 additions and 103 deletions

View File

@ -147,7 +147,7 @@ NS_CP_ContentTypeName(PRUint32 contentType)
return NS_ERROR_FAILURE; \
\
return policy-> action (contentType, contentLocation, requestOrigin, \
content, mimeType, extra, decision);
context, mimeType, extra, decision);
/**
* Alias for calling ShouldLoad on the content policy service.
@ -157,7 +157,7 @@ inline nsresult
NS_CheckContentLoadPolicy(PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestOrigin,
nsIDOMNode *content,
nsISupports *context,
const nsACString &mimeType,
nsISupports *extra,
PRInt16 *decision)
@ -173,7 +173,7 @@ inline nsresult
NS_CheckContentProcessPolicy(PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestOrigin,
nsIDOMNode *content,
nsISupports *context,
const nsACString &mimeType,
nsISupports *extra,
PRInt16 *decision)
@ -184,36 +184,44 @@ NS_CheckContentProcessPolicy(PRUint32 contentType,
#undef CHECK_CONTENT_POLICY
/**
* Helper function to get an nsIDocShell given an nsIDOMNode.
* If the node is a document, the corresponding docshell will be returned.
* If the node is not a document, the docshell of its ownerDocument will be
* Helper function to get an nsIDocShell given a context.
* If the context is a document or window, the corresponding docshell will be
* returned.
* If the context is a non-document DOM node, the docshell of its ownerDocument
* will be returned.
*
* @param node the nsIDOMNode to find a docshell for (can be null)
* @param aContext the context to find a docshell for (can be null)
* @return a WEAK pointer to the docshell, or nsnull if it could
* not be obtained
*/
static nsIDocShell*
NS_CP_GetDocShellFromDOMNode(nsIDOMNode *aNode)
NS_CP_GetDocShellFromContext(nsISupports *aContext)
{
if (!aNode) {
if (!aContext) {
return nsnull;
}
nsIScriptGlobalObject *scriptGlobal = nsnull;
nsCOMPtr<nsIScriptGlobalObject> scriptGlobal = do_QueryInterface(aContext);
// our node might really be a document, so try that first
nsCOMPtr<nsIDocument> doc = do_QueryInterface(aNode);
if (!doc) {
// we were not a document after all, get our ownerDocument
nsCOMPtr<nsIDOMDocument> ownerDoc;
aNode->GetOwnerDocument(getter_AddRefs(ownerDoc));
// and turn it into an nsIDocument
doc = do_QueryInterface(ownerDoc);
}
if (!scriptGlobal) {
// our context might be a document (which also QIs to nsIDOMNode), so
// try that first
nsCOMPtr<nsIDocument> doc = do_QueryInterface(aContext);
if (!doc) {
// we were not a document after all, get our ownerDocument,
// hopefully
nsCOMPtr<nsIDOMNode> node = do_QueryInterface(aContext);
if (node) {
nsCOMPtr<nsIDOMDocument> ownerDoc;
node->GetOwnerDocument(getter_AddRefs(ownerDoc));
// and turn it into an nsIDocument
doc = do_QueryInterface(ownerDoc);
}
}
if (doc) {
scriptGlobal = doc->GetScriptGlobalObject();
if (doc) {
scriptGlobal = doc->GetScriptGlobalObject();
}
}
if (!scriptGlobal) {

View File

@ -162,8 +162,9 @@ interface nsIContentPolicy : nsISupports
* initiated this load request; can be null if
* inapplicable
*
* @param aRequestingNode OPTIONAL. the DOM node that initiated the
* request; can be null if inapplicable
* @param aContext OPTIONAL. the nsIDOMNode or nsIDOMWindow that
* initiated the request, or something that can QI
* to one of those; can be null if inapplicable.
*
* @param aMimeTypeGuess OPTIONAL. a guess for the requested content's
* MIME type, based on information available to
@ -179,7 +180,7 @@ interface nsIContentPolicy : nsISupports
short shouldLoad(in unsigned long aContentType,
in nsIURI aContentLocation,
in nsIURI aRequestOrigin,
in nsIDOMNode aRequestingNode,
in nsISupports aContext,
in ACString aMimeTypeGuess,
in nsISupports aExtra);
@ -200,8 +201,9 @@ interface nsIContentPolicy : nsISupports
* initiated this load request; can be null if
* inapplicable
*
* @param aRequestingNode OPTIONAL. the DOM node that initiated the
* request; can be null if inapplicable
* @param aContext OPTIONAL. the nsIDOMNode or nsIDOMWindow that
* initiated the request, or something that can QI
* to one of those; can be null if inapplicable.
*
* @param aMimeType the MIME type of the requested resource (e.g.,
* image/png), as reported by the networking library,
@ -216,7 +218,7 @@ interface nsIContentPolicy : nsISupports
short shouldProcess(in unsigned long aContentType,
in nsIURI aContentLocation,
in nsIURI aRequestOrigin,
in nsIDOMNode aRequestingNode,
in nsISupports aContext,
in ACString aMimeType,
in nsISupports aExtra);

View File

@ -46,6 +46,8 @@
#include "nsContentPolicy.h"
#include "nsICategoryManager.h"
#include "nsIURI.h"
#include "nsIDOMNode.h"
#include "nsIDOMWindow.h"
NS_IMPL_ISUPPORTS1(nsContentPolicy, nsIContentPolicy)
@ -156,7 +158,7 @@ nsContentPolicy::CheckPolicy(CPMethod policyMethod,
PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestingLocation,
nsIDOMNode *requestingNode,
nsISupports *requestingContext,
const nsACString &mimeType,
nsISupports *extra,
PRInt16 *decision)
@ -166,6 +168,15 @@ nsContentPolicy::CheckPolicy(CPMethod policyMethod,
WARN_IF_URI_UNINITIALIZED(contentLocation, "Request URI");
WARN_IF_URI_UNINITIALIZED(requestingLocation, "Requesting URI");
#ifdef DEBUG
{
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(requestingContext));
nsCOMPtr<nsIDOMWindow> window(do_QueryInterface(requestingContext));
NS_ASSERTION(!requestingContext || node || window,
"Context should be a DOM node or a DOM window!");
}
#endif
PRInt32 count = mPolicies.Count();
nsresult rv = NS_OK;
@ -182,7 +193,7 @@ nsContentPolicy::CheckPolicy(CPMethod policyMethod,
/* check the appropriate policy */
rv = (policy->*policyMethod)(contentType, contentLocation,
requestingLocation, requestingNode,
requestingLocation, requestingContext,
mimeType, extra, decision);
if (NS_SUCCEEDED(rv) && NS_CP_REJECTED(*decision)) {
@ -235,7 +246,7 @@ NS_IMETHODIMP
nsContentPolicy::ShouldLoad(PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestingLocation,
nsIDOMNode *requestingNode,
nsISupports *requestingContext,
const nsACString &mimeType,
nsISupports *extra,
PRInt16 *decision)
@ -244,7 +255,7 @@ nsContentPolicy::ShouldLoad(PRUint32 contentType,
NS_PRECONDITION(contentLocation, "Must provide request location");
nsresult rv = CheckPolicy(&nsIContentPolicy::ShouldLoad, contentType,
contentLocation, requestingLocation,
requestingNode, mimeType, extra, decision);
requestingContext, mimeType, extra, decision);
LOG_CHECK("ShouldLoad");
return rv;
@ -254,14 +265,14 @@ NS_IMETHODIMP
nsContentPolicy::ShouldProcess(PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestingLocation,
nsIDOMNode *requestingNode,
nsISupports *requestingContext,
const nsACString &mimeType,
nsISupports *extra,
PRInt16 *decision)
{
nsresult rv = CheckPolicy(&nsIContentPolicy::ShouldProcess, contentType,
contentLocation, requestingLocation,
requestingNode, mimeType, extra, decision);
requestingContext, mimeType, extra, decision);
LOG_CHECK("ShouldProcess");
return rv;

View File

@ -59,14 +59,14 @@ class nsContentPolicy : public nsIContentPolicy
typedef
NS_STDCALL_FUNCPROTO(nsresult, CPMethod, nsIContentPolicy,
ShouldProcess,
(PRUint32, nsIURI*, nsIURI*, nsIDOMNode*,
(PRUint32, nsIURI*, nsIURI*, nsISupports*,
const nsACString &, nsISupports*, PRInt16*));
//Helper method that applies policyMethod across all policies in mPolicies
// with the given parameters
nsresult CheckPolicy(CPMethod policyMethod, PRUint32 contentType,
nsIURI *aURI, nsIURI *origURI,
nsIDOMNode *requestingNode,
nsISupports *requestingContext,
const nsACString &mimeGuess, nsISupports *extra,
PRInt16 *decision);
};

View File

@ -1656,13 +1656,11 @@ nsContentUtils::CanLoadImage(nsIURI* aURI, nsISupports* aContext,
nsIURI *docURI = aLoadingDocument->GetDocumentURI();
PRInt16 decision = nsIContentPolicy::ACCEPT;
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(aContext));
//don't care if node is null -- just pass null on if it is
nsresult rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_IMAGE,
aURI,
docURI,
node,
aContext,
EmptyCString(), //mime guess
nsnull, //extra
&decision);
@ -1670,6 +1668,7 @@ nsContentUtils::CanLoadImage(nsIURI* aURI, nsISupports* aContext,
return NS_FAILED(rv) ? PR_FALSE : NS_CP_ACCEPTED(decision);
}
// static
nsresult
nsContentUtils::LoadImage(nsIURI* aURI, nsIDocument* aLoadingDocument,
nsIURI* aReferrer, imgIDecoderObserver* aObserver,

View File

@ -463,11 +463,10 @@ nsScriptLoader::ProcessScriptElement(nsIScriptElement *aElement,
if (globalObject) {
PRInt16 shouldLoad = nsIContentPolicy::ACCEPT;
nsIURI *docURI = mDocument->GetDocumentURI();
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(aElement));
rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_SCRIPT,
scriptURI,
docURI,
node,
aElement,
NS_LossyConvertUCS2toASCII(type),
nsnull, //extra
&shouldLoad);

View File

@ -935,13 +935,13 @@ CSSLoaderImpl::IsAlternate(const nsAString& aTitle)
*
* @param aSourceURI the uri of the document or parent sheet loading the sheet
* @param aTargetURI the uri of the sheet to be loaded
* @param aNode the node owning the sheet. This is the element or document
* owning the stylesheet (possibly indirectly, for child sheets)
* @param aContext the node owning the sheet. This is the element or document
* owning the stylesheet (possibly indirectly, for child sheets)
*/
nsresult
CSSLoaderImpl::CheckLoadAllowed(nsIURI* aSourceURI,
nsIURI* aTargetURI,
nsIDOMNode* aNode)
nsISupports* aContext)
{
LOG(("CSSLoaderImpl::CheckLoadAllowed"));
@ -961,7 +961,7 @@ CSSLoaderImpl::CheckLoadAllowed(nsIURI* aSourceURI,
rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_STYLESHEET,
aTargetURI,
aSourceURI,
aNode,
aContext,
NS_LITERAL_CSTRING("text/css"),
nsnull, //extra param
&shouldLoad);
@ -1687,12 +1687,11 @@ CSSLoaderImpl::LoadStyleLink(nsIContent* aElement,
nsIURI *docURI = mDocument->GetDocumentURI();
if (!docURI) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(aElement));
if (!node) {
node = do_QueryInterface(mDocument);
nsISupports* context = aElement;
if (!context) {
context = mDocument;
}
nsresult rv = CheckLoadAllowed(docURI, aURL, node);
nsresult rv = CheckLoadAllowed(docURI, aURL, context);
if (NS_FAILED(rv)) return rv;
LOG((" Passed load check"));
@ -1789,12 +1788,12 @@ CSSLoaderImpl::LoadChildSheet(nsICSSStyleSheet* aParentSheet,
topSheet->GetOwnerNode(getter_AddRefs(owningNode));
}
if (!owningNode) {
//failed to get owning node, revert to document
owningNode = do_QueryInterface(mDocument);
nsISupports* context = owningNode;
if (!context) {
context = mDocument;
}
rv = CheckLoadAllowed(sheetURI, aURL, owningNode);
rv = CheckLoadAllowed(sheetURI, aURL, context);
if (NS_FAILED(rv)) return rv;
LOG((" Passed load check"));

View File

@ -50,7 +50,6 @@
#define nsCSSLoader_h__
class CSSLoaderImpl;
class nsIDOMNode;
#include "nsIURI.h"
#include "nsIParser.h"
@ -272,7 +271,7 @@ public:
private:
nsresult CheckLoadAllowed(nsIURI* aSourceURI,
nsIURI* aTargetURI,
nsIDOMNode* aContext);
nsISupports* aContext);
// For inline style, the aURI param is null, but the aLinkingContent

View File

@ -5124,10 +5124,14 @@ nsDocShell::InternalLoad(nsIURI * aURI,
contentType = nsIContentPolicy::TYPE_DOCUMENT;
}
nsISupports* context = requestingElement;
if (!context) {
context = mScriptGlobal;
}
rv = NS_CheckContentLoadPolicy(contentType,
aURI,
aReferrer,
requestingElement,
context,
EmptyCString(), //mime guess
nsnull, //extra
&shouldLoad);

View File

@ -41,7 +41,6 @@
#include "nsIScriptGlobalObject.h"
#include "nsIDocShell.h"
#include "nsCOMPtr.h"
#include "nsIDOMNode.h"
#include "nsContentPolicyUtils.h"
nsWebBrowserContentPolicy::nsWebBrowserContentPolicy()
@ -57,15 +56,15 @@ nsWebBrowserContentPolicy::~nsWebBrowserContentPolicy()
NS_IMPL_ISUPPORTS1(nsWebBrowserContentPolicy, nsIContentPolicy)
static nsresult
PerformPolicyCheck(PRUint32 contentType,
nsIDOMNode *requestingNode,
PRInt16 *decision)
PerformPolicyCheck(PRUint32 contentType,
nsISupports *requestingContext,
PRInt16 *decision)
{
NS_PRECONDITION(decision, "Null out param");
*decision = nsIContentPolicy::ACCEPT;
nsIDocShell *shell = NS_CP_GetDocShellFromDOMNode(requestingNode);
nsIDocShell *shell = NS_CP_GetDocShellFromContext(requestingContext);
/* We're going to dereference shell, so make sure it isn't null */
if (!shell)
return NS_OK;
@ -106,19 +105,19 @@ NS_IMETHODIMP
nsWebBrowserContentPolicy::ShouldLoad(PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestingLocation,
nsIDOMNode *requestingNode,
nsISupports *requestingContext,
const nsACString &mimeGuess,
nsISupports *extra,
PRInt16 *shouldLoad)
{
return PerformPolicyCheck(contentType, requestingNode, shouldLoad);
return PerformPolicyCheck(contentType, requestingContext, shouldLoad);
}
NS_IMETHODIMP
nsWebBrowserContentPolicy::ShouldProcess(PRUint32 contentType,
nsIURI *contentLocation,
nsIURI *requestingLocation,
nsIDOMNode *requestingNode,
nsISupports *requestingContext,
const nsACString &mimeGuess,
nsISupports *extra,
PRInt16 *shouldProcess)
@ -126,5 +125,5 @@ nsWebBrowserContentPolicy::ShouldProcess(PRUint32 contentType,
*shouldProcess = nsIContentPolicy::ACCEPT;
return NS_OK;
//LATER:
// return PerformPolicyCheck(contentType, requestingNode, shouldProcess);
// return PerformPolicyCheck(contentType, requestingContext, shouldProcess);
}

View File

@ -129,15 +129,15 @@ nsImgManager::PrefChanged(nsIPrefBranch *aPrefBranch,
}
/**
* Helper function to get the root DocShell given a DOMNode
* Helper function to get the root DocShell given a context
*
* @param aNode a DOMNode (cannot be null)
* @return the root DocShell containing the DOMNode, if found
* @param aContext The context (can be null)
* @return the root DocShell containing aContext, if found
*/
static inline already_AddRefed<nsIDocShell>
GetRootDocShell(nsIDOMNode *node)
GetRootDocShell(nsISupports *context)
{
nsIDocShell *docshell = NS_CP_GetDocShellFromDOMNode(node);
nsIDocShell *docshell = NS_CP_GetDocShellFromContext(context);
if (!docshell)
return nsnull;
@ -161,7 +161,7 @@ GetRootDocShell(nsIDOMNode *node)
NS_IMETHODIMP nsImgManager::ShouldLoad(PRUint32 aContentType,
nsIURI *aContentLocation,
nsIURI *aRequestingLocation,
nsIDOMNode *aRequestingNode,
nsISupports *aRequestingContext,
const nsACString &aMimeGuess,
nsISupports *aExtra,
PRInt16 *aDecision)
@ -195,7 +195,7 @@ NS_IMETHODIMP nsImgManager::ShouldLoad(PRUint32 aContentType,
if (!needToCheck)
return NS_OK;
nsCOMPtr<nsIDocShell> docshell(GetRootDocShell(aRequestingNode));
nsCOMPtr<nsIDocShell> docshell(GetRootDocShell(aRequestingContext));
if (docshell) {
PRUint32 appType;
rv = docshell->GetAppType(&appType);
@ -222,16 +222,16 @@ NS_IMETHODIMP nsImgManager::ShouldLoad(PRUint32 aContentType,
NS_IMETHODIMP nsImgManager::ShouldProcess(PRUint32 aContentType,
nsIURI *aContentLocation,
nsIURI *aRequestingLocation,
nsIDOMNode *aRequestingNode,
nsISupports *aRequestingContext,
const nsACString &aMimeGuess,
nsISupports *aExtra,
PRInt16 *aDecision)
{
// For loads where aRequestingNode is chrome, we should just accept. Those
// are most likely toplevel loads in windows, and chrome generally knows
// what it's doing anyway.
// For loads where aRequestingContext is chrome, we should just
// accept. Those are most likely toplevel loads in windows, and
// chrome generally knows what it's doing anyway.
nsCOMPtr<nsIDocShellTreeItem> item =
do_QueryInterface(NS_CP_GetDocShellFromDOMNode(aRequestingNode));
do_QueryInterface(NS_CP_GetDocShellFromContext(aRequestingContext));
if (item) {
PRInt32 type;
@ -245,7 +245,7 @@ NS_IMETHODIMP nsImgManager::ShouldProcess(PRUint32 aContentType,
// This isn't a load from chrome. Just do a ShouldLoad() check --
// we want the same answer here
return ShouldLoad(aContentType, aContentLocation, aRequestingLocation,
aRequestingNode, aMimeGuess, aExtra, aDecision);
aRequestingContext, aMimeGuess, aExtra, aDecision);
}
NS_IMETHODIMP

View File

@ -1253,8 +1253,6 @@ nsObjectFrame::InstantiatePlugin(nsIPresContext* aPresContext,
if(aURI)
{
nsresult rv;
nsCOMPtr<nsIDOMNode> domNode = do_QueryInterface(mContent, &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIDocument> document;
rv = aPresContext->PresShell()->GetDocument(getter_AddRefs(document));
@ -1270,7 +1268,7 @@ nsObjectFrame::InstantiatePlugin(nsIPresContext* aPresContext,
rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_OBJECT,
aURI,
docURI,
domNode,
mContent,
nsDependentCString(aMimetype ? aMimetype : ""),
nsnull, //extra
&shouldLoad);

View File

@ -1253,8 +1253,6 @@ nsObjectFrame::InstantiatePlugin(nsIPresContext* aPresContext,
if(aURI)
{
nsresult rv;
nsCOMPtr<nsIDOMNode> domNode = do_QueryInterface(mContent, &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIDocument> document;
rv = aPresContext->PresShell()->GetDocument(getter_AddRefs(document));
@ -1270,7 +1268,7 @@ nsObjectFrame::InstantiatePlugin(nsIPresContext* aPresContext,
rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_OBJECT,
aURI,
docURI,
domNode,
mContent,
nsDependentCString(aMimetype ? aMimetype : ""),
nsnull, //extra
&shouldLoad);

View File

@ -935,13 +935,13 @@ CSSLoaderImpl::IsAlternate(const nsAString& aTitle)
*
* @param aSourceURI the uri of the document or parent sheet loading the sheet
* @param aTargetURI the uri of the sheet to be loaded
* @param aNode the node owning the sheet. This is the element or document
* owning the stylesheet (possibly indirectly, for child sheets)
* @param aContext the node owning the sheet. This is the element or document
* owning the stylesheet (possibly indirectly, for child sheets)
*/
nsresult
CSSLoaderImpl::CheckLoadAllowed(nsIURI* aSourceURI,
nsIURI* aTargetURI,
nsIDOMNode* aNode)
nsISupports* aContext)
{
LOG(("CSSLoaderImpl::CheckLoadAllowed"));
@ -961,7 +961,7 @@ CSSLoaderImpl::CheckLoadAllowed(nsIURI* aSourceURI,
rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_STYLESHEET,
aTargetURI,
aSourceURI,
aNode,
aContext,
NS_LITERAL_CSTRING("text/css"),
nsnull, //extra param
&shouldLoad);
@ -1687,12 +1687,11 @@ CSSLoaderImpl::LoadStyleLink(nsIContent* aElement,
nsIURI *docURI = mDocument->GetDocumentURI();
if (!docURI) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(aElement));
if (!node) {
node = do_QueryInterface(mDocument);
nsISupports* context = aElement;
if (!context) {
context = mDocument;
}
nsresult rv = CheckLoadAllowed(docURI, aURL, node);
nsresult rv = CheckLoadAllowed(docURI, aURL, context);
if (NS_FAILED(rv)) return rv;
LOG((" Passed load check"));
@ -1789,12 +1788,12 @@ CSSLoaderImpl::LoadChildSheet(nsICSSStyleSheet* aParentSheet,
topSheet->GetOwnerNode(getter_AddRefs(owningNode));
}
if (!owningNode) {
//failed to get owning node, revert to document
owningNode = do_QueryInterface(mDocument);
nsISupports* context = owningNode;
if (!context) {
context = mDocument;
}
rv = CheckLoadAllowed(sheetURI, aURL, owningNode);
rv = CheckLoadAllowed(sheetURI, aURL, context);
if (NS_FAILED(rv)) return rv;
LOG((" Passed load check"));

View File

@ -50,7 +50,6 @@
#define nsCSSLoader_h__
class CSSLoaderImpl;
class nsIDOMNode;
#include "nsIURI.h"
#include "nsIParser.h"
@ -272,7 +271,7 @@ public:
private:
nsresult CheckLoadAllowed(nsIURI* aSourceURI,
nsIURI* aTargetURI,
nsIDOMNode* aContext);
nsISupports* aContext);
// For inline style, the aURI param is null, but the aLinkingContent

View File

@ -121,7 +121,7 @@ NS_IMETHODIMP
nsMsgContentPolicy::ShouldLoad(PRUint32 aContentType,
nsIURI *aContentLocation,
nsIURI *aRequestingLocation,
nsIDOMNode *aRequestingNode,
nsISupports *aRequestingContext,
const nsACString &aMimeGuess,
nsISupports *aExtra,
PRInt16 *aDecision)
@ -234,7 +234,7 @@ NS_IMETHODIMP
nsMsgContentPolicy::ShouldProcess(PRUint32 aContentType,
nsIURI *aContentLocation,
nsIURI *aRequestingLocation,
nsIDOMNode *aRequestingNode,
nsISupports *aRequestingContext,
const nsACString &aMimeGuess,
nsISupports *aExtra,
PRInt16 *aDecision)