From fc9e43113e40eb49453b3221ed0e4eeb017bf47a Mon Sep 17 00:00:00 2001 From: "tbogard%aol.net" Date: Sat, 13 Nov 1999 04:06:23 +0000 Subject: [PATCH] Made webshell implement nsIInterfaceRequestor. This paves the way for me to start changing people to not use nsIContentViewerContainer::QueryCapability(). r=pavlov git-svn-id: svn://10.0.0.236/trunk@53404 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsWebShell.cpp | 59 ++++++++++++++++------------ mozilla/webshell/src/nsWebShell.cpp | 59 ++++++++++++++++------------ 2 files changed, 68 insertions(+), 50 deletions(-) diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 9708a1d3a61..1eb1e9cd6f7 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -20,6 +20,7 @@ * Contributor(s): */ #include "nsIWebShell.h" +#include "nsIInterfaceRequestor.h" #include "nsIDocumentLoader.h" #include "nsIContentViewer.h" #include "nsIDocumentViewer.h" @@ -156,7 +157,9 @@ class nsWebShell : public nsIWebShell, public nsIProgressEventSink, // should go away (nsIDocLoaderObs) public nsIPrompt, public nsIRefreshURI, - public nsIClipboardCommands + public nsIClipboardCommands, + public nsIInterfaceRequestor + { public: nsWebShell(); @@ -167,6 +170,9 @@ public: // nsISupports NS_DECL_ISUPPORTS + // nsIInterfaceRequestor + NS_DECL_NSIINTERFACEREQUESTOR + // nsIContentViewerContainer NS_IMETHOD QueryCapability(const nsIID &aIID, void** aResult); NS_IMETHOD Embed(nsIContentViewer* aDocViewer, @@ -766,9 +772,8 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) { nsresult rv = NS_NOINTERFACE; - if (NULL == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } + NS_ENSURE_ARG_POINTER(aInstancePtr); + if (aIID.Equals(kIWebShellServicesIID)) { *aInstancePtr = (void*)(nsIWebShellServices*)this; NS_ADDREF_THIS(); @@ -811,7 +816,7 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) NS_ADDREF_THIS(); return NS_OK; } - if (aIID.Equals(nsIPrompt::GetIID())) { + if (aIID.Equals(NS_GET_IID(nsIPrompt))) { *aInstancePtr = (void*) ((nsIPrompt*)this); NS_ADDREF_THIS(); return NS_OK; @@ -845,29 +850,33 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) return rv; } +NS_IMETHODIMP +nsWebShell::GetInterface(const nsIID &aIID, void** aInstancePtr) +{ + NS_ENSURE_ARG_POINTER(aInstancePtr); + + if(aIID.Equals(NS_GET_IID(nsILinkHandler))) + { + *aInstancePtr = NS_STATIC_CAST(nsILinkHandler*, this); + NS_ADDREF_THIS(); + return NS_OK; + } + else if(aIID.Equals(NS_GET_IID(nsIScriptContextOwner))) + { + *aInstancePtr = NS_STATIC_CAST(nsIScriptContextOwner*, this); + NS_ADDREF_THIS(); + return NS_OK; + } + else if(mPluginManager) //XXX this seems a little wrong. MMP + return mPluginManager->QueryInterface(aIID, aInstancePtr); + + return NS_NOINTERFACE; +} + NS_IMETHODIMP nsWebShell::QueryCapability(const nsIID &aIID, void** aInstancePtr) { - if (nsnull == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } - - if (aIID.Equals(kILinkHandlerIID)) { - *aInstancePtr = (void*) ((nsILinkHandler*)this); - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(kIScriptContextOwnerIID)) { - *aInstancePtr = (void*) ((nsIScriptContextOwner*)this); - NS_ADDREF_THIS(); - return NS_OK; - } - - //XXX this seems a little wrong. MMP - if (nsnull != mPluginManager) - return mPluginManager->QueryInterface(aIID, aInstancePtr); - - return NS_NOINTERFACE; + return GetInterface(aIID, aInstancePtr); } NS_IMETHODIMP diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 9708a1d3a61..1eb1e9cd6f7 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -20,6 +20,7 @@ * Contributor(s): */ #include "nsIWebShell.h" +#include "nsIInterfaceRequestor.h" #include "nsIDocumentLoader.h" #include "nsIContentViewer.h" #include "nsIDocumentViewer.h" @@ -156,7 +157,9 @@ class nsWebShell : public nsIWebShell, public nsIProgressEventSink, // should go away (nsIDocLoaderObs) public nsIPrompt, public nsIRefreshURI, - public nsIClipboardCommands + public nsIClipboardCommands, + public nsIInterfaceRequestor + { public: nsWebShell(); @@ -167,6 +170,9 @@ public: // nsISupports NS_DECL_ISUPPORTS + // nsIInterfaceRequestor + NS_DECL_NSIINTERFACEREQUESTOR + // nsIContentViewerContainer NS_IMETHOD QueryCapability(const nsIID &aIID, void** aResult); NS_IMETHOD Embed(nsIContentViewer* aDocViewer, @@ -766,9 +772,8 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) { nsresult rv = NS_NOINTERFACE; - if (NULL == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } + NS_ENSURE_ARG_POINTER(aInstancePtr); + if (aIID.Equals(kIWebShellServicesIID)) { *aInstancePtr = (void*)(nsIWebShellServices*)this; NS_ADDREF_THIS(); @@ -811,7 +816,7 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) NS_ADDREF_THIS(); return NS_OK; } - if (aIID.Equals(nsIPrompt::GetIID())) { + if (aIID.Equals(NS_GET_IID(nsIPrompt))) { *aInstancePtr = (void*) ((nsIPrompt*)this); NS_ADDREF_THIS(); return NS_OK; @@ -845,29 +850,33 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) return rv; } +NS_IMETHODIMP +nsWebShell::GetInterface(const nsIID &aIID, void** aInstancePtr) +{ + NS_ENSURE_ARG_POINTER(aInstancePtr); + + if(aIID.Equals(NS_GET_IID(nsILinkHandler))) + { + *aInstancePtr = NS_STATIC_CAST(nsILinkHandler*, this); + NS_ADDREF_THIS(); + return NS_OK; + } + else if(aIID.Equals(NS_GET_IID(nsIScriptContextOwner))) + { + *aInstancePtr = NS_STATIC_CAST(nsIScriptContextOwner*, this); + NS_ADDREF_THIS(); + return NS_OK; + } + else if(mPluginManager) //XXX this seems a little wrong. MMP + return mPluginManager->QueryInterface(aIID, aInstancePtr); + + return NS_NOINTERFACE; +} + NS_IMETHODIMP nsWebShell::QueryCapability(const nsIID &aIID, void** aInstancePtr) { - if (nsnull == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } - - if (aIID.Equals(kILinkHandlerIID)) { - *aInstancePtr = (void*) ((nsILinkHandler*)this); - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(kIScriptContextOwnerIID)) { - *aInstancePtr = (void*) ((nsIScriptContextOwner*)this); - NS_ADDREF_THIS(); - return NS_OK; - } - - //XXX this seems a little wrong. MMP - if (nsnull != mPluginManager) - return mPluginManager->QueryInterface(aIID, aInstancePtr); - - return NS_NOINTERFACE; + return GetInterface(aIID, aInstancePtr); } NS_IMETHODIMP