From a07e32563c735814b4cda88d783efafc1733b4fa Mon Sep 17 00:00:00 2001 From: "nisheeth%netscape.com" Date: Thu, 6 May 1999 03:54:40 +0000 Subject: [PATCH] - Implemented GetContentViewerContainer() in the nsDocLoaderImpl() object. - Added charset parameters to LoadDocument(), a method defined in nsIWebShellServices git-svn-id: svn://10.0.0.236/trunk@30507 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsWebShell.cpp | 11 ++++-- mozilla/uriloader/base/nsDocLoader.cpp | 53 +++++++++++++++++++------- mozilla/webshell/src/nsDocLoader.cpp | 53 +++++++++++++++++++------- mozilla/webshell/src/nsWebShell.cpp | 11 ++++-- 4 files changed, 96 insertions(+), 32 deletions(-) diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 092d58f84c2..189af3d086f 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -245,7 +245,9 @@ public: NS_IMETHOD FocusAvailable(nsIWebShell* aFocusedWebShell, PRBool& aFocusTaken); // nsIWebShellServices - NS_IMETHOD LoadDocument(const char* aURL); + NS_IMETHOD LoadDocument(const char* aURL, + const char* aCharset, + nsCharsetSource aSource); NS_IMETHOD StopDocumentLoad(void); NS_IMETHOD SetRendering(PRBool aRender); @@ -1938,7 +1940,9 @@ nsWebShell::FocusAvailable(nsIWebShell* aFocusedWebShell, PRBool& aFocusTaken) // Web Shell Services API NS_IMETHODIMP -nsWebShell::LoadDocument(const char* aURL) +nsWebShell::LoadDocument(const char* aURL, + const char* aCharset, + nsCharsetSource aSource) { return NS_OK; } @@ -1946,6 +1950,7 @@ nsWebShell::LoadDocument(const char* aURL) NS_IMETHODIMP nsWebShell::StopDocumentLoad(void) { + Stop(); return NS_OK; } @@ -2289,7 +2294,7 @@ nsWebShell::OnStartDocumentLoad(nsIDocumentLoader* loader, nsIDocumentViewer* docViewer; nsresult rv = NS_ERROR_FAILURE; - + if (nsnull != mScriptGlobal) { if (nsnull != mContentViewer && NS_OK == mContentViewer->QueryInterface(kIDocumentViewerIID, (void**)&docViewer)) { diff --git a/mozilla/uriloader/base/nsDocLoader.cpp b/mozilla/uriloader/base/nsDocLoader.cpp index 8890b55effd..011d2953ee0 100644 --- a/mozilla/uriloader/base/nsDocLoader.cpp +++ b/mozilla/uriloader/base/nsDocLoader.cpp @@ -51,6 +51,8 @@ #include "nsICSSParser.h" #include "nsICSSStyleSheet.h" #include "nsLayoutCID.h" +#include "nsIPresShell.h" +#include "nsIPresContext.h" #include "nsRDFCID.h" #include "nsIXULParentDocument.h" @@ -81,17 +83,19 @@ PRLogModuleInfo* gDocLoaderLog = nsnull; /* Define IIDs... */ -NS_DEFINE_IID(kIStreamObserverIID, NS_ISTREAMOBSERVER_IID); -NS_DEFINE_IID(kIDocumentLoaderIID, NS_IDOCUMENTLOADER_IID); -NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); -NS_DEFINE_IID(kDocumentBindInfoIID, NS_DOCUMENTBINDINFO_IID); -NS_DEFINE_IID(kIURLGroupIID, NS_IURLGROUP_IID); -NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); -NS_DEFINE_IID(kHTTPURLIID, NS_IHTTPURL_IID); -NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -NS_DEFINE_IID(kIDocumentIID, NS_IDOCUMENT_IID); -NS_DEFINE_IID(kIStreamListenerIID, NS_ISTREAMLISTENER_IID); -NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID); +NS_DEFINE_IID(kIStreamObserverIID, NS_ISTREAMOBSERVER_IID); +NS_DEFINE_IID(kIDocumentLoaderIID, NS_IDOCUMENTLOADER_IID); +NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); +NS_DEFINE_IID(kDocumentBindInfoIID, NS_DOCUMENTBINDINFO_IID); +NS_DEFINE_IID(kIURLGroupIID, NS_IURLGROUP_IID); +NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); +NS_DEFINE_IID(kHTTPURLIID, NS_IHTTPURL_IID); +NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); +NS_DEFINE_IID(kIDocumentIID, NS_IDOCUMENT_IID); +NS_DEFINE_IID(kIStreamListenerIID, NS_ISTREAMLISTENER_IID); +NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID); +NS_DEFINE_IID(kIContentViewerContainerIID, NS_ICONTENT_VIEWER_CONTAINER_IID); + /* Define CIDs... */ NS_DEFINE_IID(kCHTMLDocumentCID, NS_HTMLDOCUMENT_CID); @@ -1254,8 +1258,31 @@ NS_IMETHODIMP nsDocLoaderImpl::GetContentViewerContainer(PRUint32 aDocumentID, nsIContentViewerContainer** aResult) { - *aResult = nsnull; - return NS_OK; + nsISupports* base = (nsISupports*) aDocumentID; + nsIDocument* doc; + nsresult rv; + + rv = base->QueryInterface(kIDocumentIID, (void**)&doc); + if (NS_SUCCEEDED(rv)) { + nsIPresShell* pres; + pres = doc->GetShellAt(0); + if (nsnull != pres) { + nsIPresContext* presContext; + rv = pres->GetPresContext(&presContext); + if (NS_SUCCEEDED(rv) && nsnull != presContext) { + nsISupports* supp; + rv = presContext->GetContainer(&supp); + if (NS_SUCCEEDED(rv) && nsnull != supp) { + rv = supp->QueryInterface(kIContentViewerContainerIID, (void**)aResult); + NS_RELEASE(supp); + } + NS_RELEASE(presContext); + } + NS_RELEASE(pres); + } + NS_RELEASE(doc); + } + return rv; } NS_IMETHODIMP diff --git a/mozilla/webshell/src/nsDocLoader.cpp b/mozilla/webshell/src/nsDocLoader.cpp index 8890b55effd..011d2953ee0 100644 --- a/mozilla/webshell/src/nsDocLoader.cpp +++ b/mozilla/webshell/src/nsDocLoader.cpp @@ -51,6 +51,8 @@ #include "nsICSSParser.h" #include "nsICSSStyleSheet.h" #include "nsLayoutCID.h" +#include "nsIPresShell.h" +#include "nsIPresContext.h" #include "nsRDFCID.h" #include "nsIXULParentDocument.h" @@ -81,17 +83,19 @@ PRLogModuleInfo* gDocLoaderLog = nsnull; /* Define IIDs... */ -NS_DEFINE_IID(kIStreamObserverIID, NS_ISTREAMOBSERVER_IID); -NS_DEFINE_IID(kIDocumentLoaderIID, NS_IDOCUMENTLOADER_IID); -NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); -NS_DEFINE_IID(kDocumentBindInfoIID, NS_DOCUMENTBINDINFO_IID); -NS_DEFINE_IID(kIURLGroupIID, NS_IURLGROUP_IID); -NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); -NS_DEFINE_IID(kHTTPURLIID, NS_IHTTPURL_IID); -NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -NS_DEFINE_IID(kIDocumentIID, NS_IDOCUMENT_IID); -NS_DEFINE_IID(kIStreamListenerIID, NS_ISTREAMLISTENER_IID); -NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID); +NS_DEFINE_IID(kIStreamObserverIID, NS_ISTREAMOBSERVER_IID); +NS_DEFINE_IID(kIDocumentLoaderIID, NS_IDOCUMENTLOADER_IID); +NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); +NS_DEFINE_IID(kDocumentBindInfoIID, NS_DOCUMENTBINDINFO_IID); +NS_DEFINE_IID(kIURLGroupIID, NS_IURLGROUP_IID); +NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); +NS_DEFINE_IID(kHTTPURLIID, NS_IHTTPURL_IID); +NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); +NS_DEFINE_IID(kIDocumentIID, NS_IDOCUMENT_IID); +NS_DEFINE_IID(kIStreamListenerIID, NS_ISTREAMLISTENER_IID); +NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID); +NS_DEFINE_IID(kIContentViewerContainerIID, NS_ICONTENT_VIEWER_CONTAINER_IID); + /* Define CIDs... */ NS_DEFINE_IID(kCHTMLDocumentCID, NS_HTMLDOCUMENT_CID); @@ -1254,8 +1258,31 @@ NS_IMETHODIMP nsDocLoaderImpl::GetContentViewerContainer(PRUint32 aDocumentID, nsIContentViewerContainer** aResult) { - *aResult = nsnull; - return NS_OK; + nsISupports* base = (nsISupports*) aDocumentID; + nsIDocument* doc; + nsresult rv; + + rv = base->QueryInterface(kIDocumentIID, (void**)&doc); + if (NS_SUCCEEDED(rv)) { + nsIPresShell* pres; + pres = doc->GetShellAt(0); + if (nsnull != pres) { + nsIPresContext* presContext; + rv = pres->GetPresContext(&presContext); + if (NS_SUCCEEDED(rv) && nsnull != presContext) { + nsISupports* supp; + rv = presContext->GetContainer(&supp); + if (NS_SUCCEEDED(rv) && nsnull != supp) { + rv = supp->QueryInterface(kIContentViewerContainerIID, (void**)aResult); + NS_RELEASE(supp); + } + NS_RELEASE(presContext); + } + NS_RELEASE(pres); + } + NS_RELEASE(doc); + } + return rv; } NS_IMETHODIMP diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 092d58f84c2..189af3d086f 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -245,7 +245,9 @@ public: NS_IMETHOD FocusAvailable(nsIWebShell* aFocusedWebShell, PRBool& aFocusTaken); // nsIWebShellServices - NS_IMETHOD LoadDocument(const char* aURL); + NS_IMETHOD LoadDocument(const char* aURL, + const char* aCharset, + nsCharsetSource aSource); NS_IMETHOD StopDocumentLoad(void); NS_IMETHOD SetRendering(PRBool aRender); @@ -1938,7 +1940,9 @@ nsWebShell::FocusAvailable(nsIWebShell* aFocusedWebShell, PRBool& aFocusTaken) // Web Shell Services API NS_IMETHODIMP -nsWebShell::LoadDocument(const char* aURL) +nsWebShell::LoadDocument(const char* aURL, + const char* aCharset, + nsCharsetSource aSource) { return NS_OK; } @@ -1946,6 +1950,7 @@ nsWebShell::LoadDocument(const char* aURL) NS_IMETHODIMP nsWebShell::StopDocumentLoad(void) { + Stop(); return NS_OK; } @@ -2289,7 +2294,7 @@ nsWebShell::OnStartDocumentLoad(nsIDocumentLoader* loader, nsIDocumentViewer* docViewer; nsresult rv = NS_ERROR_FAILURE; - + if (nsnull != mScriptGlobal) { if (nsnull != mContentViewer && NS_OK == mContentViewer->QueryInterface(kIDocumentViewerIID, (void**)&docViewer)) {