From 0025ce45a8302939ae328fa5aa2bd6df0c3e98e7 Mon Sep 17 00:00:00 2001 From: "tbogard%aol.net" Date: Fri, 31 Mar 2000 04:11:29 +0000 Subject: [PATCH] Implemented EnsureWebProgressListener(). You can now call GetInterface on the docshell to get to a nsIWebProgressListener interface. git-svn-id: svn://10.0.0.236/trunk@64692 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsDocShell.cpp | 21 +++++++++++++++++++-- mozilla/docshell/base/nsDocShell.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 2c43709bb34..7fc6aad75e2 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -69,6 +69,7 @@ static NS_DEFINE_IID(kDeviceContextCID, NS_DEVICE_CONTEXT_CID); nsDocShell::nsDocShell() : mContentListener(nsnull), + mWebProgressListener(nsnull), mInitInfo(nsnull), mMarginWidth(0), mMarginHeight(0), @@ -155,6 +156,9 @@ NS_IMETHODIMP nsDocShell::GetInterface(const nsIID& aIID, void** aSink) if(aIID.Equals(NS_GET_IID(nsIURIContentListener)) && NS_SUCCEEDED(EnsureContentListener())) *aSink = mContentListener; + if(aIID.Equals(NS_GET_IID(nsIURIContentListener)) && + NS_SUCCEEDED(EnsureWebProgressListener())) + *aSink = mWebProgressListener; else if(aIID.Equals(NS_GET_IID(nsIScriptGlobalObject)) && NS_SUCCEEDED(EnsureScriptEnvironment())) *aSink = mScriptGlobal; @@ -1287,6 +1291,12 @@ NS_IMETHODIMP nsDocShell::Destroy() NS_RELEASE(mContentListener); } + if(mWebProgressListener) + { + mWebProgressListener->DocShell(nsnull); + NS_RELEASE(mWebProgressListener); + } + return NS_OK; } @@ -2500,8 +2510,15 @@ NS_IMETHODIMP nsDocShell::UpdateCurrentGlobalHistory() NS_IMETHODIMP nsDocShell::EnsureWebProgressListener() { - //XXXTAB - NS_ERROR("Not yet IMplemented"); + if(mWebProgressListener) + return NS_OK; + + mWebProgressListener = new nsDSWebProgressListener(); + NS_ENSURE_TRUE(mWebProgressListener, NS_ERROR_OUT_OF_MEMORY); + + NS_ADDREF(mWebProgressListener); + mWebProgressListener->DocShell(this); + return NS_OK; } diff --git a/mozilla/docshell/base/nsDocShell.h b/mozilla/docshell/base/nsDocShell.h index 11878a3e4ae..a8e6ee999e2 100644 --- a/mozilla/docshell/base/nsDocShell.h +++ b/mozilla/docshell/base/nsDocShell.h @@ -202,6 +202,7 @@ protected: nsString mTitle; nsVoidArray mChildren; nsDSURIContentListener* mContentListener; + nsDSWebProgressListener* mWebProgressListener; nsDocShellInitInfo* mInitInfo; nsCOMPtr mContentViewer; nsCOMPtr mDeviceContext;