diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index f4b00b47a4d..a75e877c72e 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -421,13 +421,22 @@ NS_IMETHODIMP nsDocShell::GetInterface(const nsIID & aIID, void **aSink) || aIID.Equals(NS_GET_IID(nsIHttpEventSink)) || aIID.Equals(NS_GET_IID(nsIWebProgress)) || aIID.Equals(NS_GET_IID(nsISecurityEventSink))) { - // mLoadCookie is our nsIDocumentLoader - nsCOMPtr requestor(do_QueryInterface(mLoadCookie)); - nsresult rv = NS_ERROR_FAILURE; - if (requestor) - rv = requestor->GetInterface(aIID, aSink); - - return rv; + nsCOMPtr + uriLoader(do_GetService(NS_URI_LOADER_CONTRACTID)); + NS_ENSURE_TRUE(uriLoader, NS_ERROR_FAILURE); + nsCOMPtr docLoader; + NS_ENSURE_SUCCESS(uriLoader-> + GetDocumentLoaderForContext(this, + getter_AddRefs + (docLoader)), + NS_ERROR_FAILURE); + if (docLoader) { + nsCOMPtr + requestor(do_QueryInterface(docLoader)); + return requestor->GetInterface(aIID, aSink); + } + else + return NS_ERROR_FAILURE; } else if (aIID.Equals(NS_GET_IID(nsISHistory))) { nsCOMPtr shistory;