From 9f460c257e3e554a91dcf6d5bc85b75bbf507f98 Mon Sep 17 00:00:00 2001 From: "mscott%netscape.com" Date: Tue, 18 Jan 2000 21:58:15 +0000 Subject: [PATCH] Bug #19517 --> if we don't have an unknown content handler available to us, try to fetch it from out parent. r=sspitzer git-svn-id: svn://10.0.0.236/trunk@58127 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsWebShell.cpp | 15 ++++++++++++++- mozilla/webshell/src/nsWebShell.cpp | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 96f13df2e24..2ec70bcd953 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -923,7 +923,20 @@ nsWebShell::HandleUnknownContentType(nsIDocumentLoader* loader, nsIChannel* channel, const char *aContentType, const char *aCommand ) { - // If we have a doc loader observer, let it respond to this. + // If we have a doc loader observer, let it respond to this. + // if we don't have a doc loader observer...we still need to reach the unknown content handler + // somehow...we must be a frame so try asking our parent for a doc loader observer... + if (!mDocLoaderObserver && mParent) { + nsCOMPtr root; + nsCOMPtr observer; + nsresult res = GetRootWebShell(*getter_AddRefs(root)); + + if (NS_SUCCEEDED(res) && root) + root->GetDocLoaderObserver(getter_AddRefs(observer)); + if (observer) + return observer->HandleUnknownContentType(mDocLoader, channel, aContentType, aCommand); + } + return mDocLoaderObserver ? mDocLoaderObserver->HandleUnknownContentType( mDocLoader, channel, aContentType, aCommand ) : NS_ERROR_FAILURE; } diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 96f13df2e24..2ec70bcd953 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -923,7 +923,20 @@ nsWebShell::HandleUnknownContentType(nsIDocumentLoader* loader, nsIChannel* channel, const char *aContentType, const char *aCommand ) { - // If we have a doc loader observer, let it respond to this. + // If we have a doc loader observer, let it respond to this. + // if we don't have a doc loader observer...we still need to reach the unknown content handler + // somehow...we must be a frame so try asking our parent for a doc loader observer... + if (!mDocLoaderObserver && mParent) { + nsCOMPtr root; + nsCOMPtr observer; + nsresult res = GetRootWebShell(*getter_AddRefs(root)); + + if (NS_SUCCEEDED(res) && root) + root->GetDocLoaderObserver(getter_AddRefs(observer)); + if (observer) + return observer->HandleUnknownContentType(mDocLoader, channel, aContentType, aCommand); + } + return mDocLoaderObserver ? mDocLoaderObserver->HandleUnknownContentType( mDocLoader, channel, aContentType, aCommand ) : NS_ERROR_FAILURE; }