From 3dca74d3bf8d681be374ffe7ae11aee50407af0d Mon Sep 17 00:00:00 2001 From: "mscott%netscape.com" Date: Mon, 3 Apr 2000 22:41:26 +0000 Subject: [PATCH] Bug #34321,34350 --> be sure to set the web progress listener on the doc loader before every load. r=travis git-svn-id: svn://10.0.0.236/trunk@65062 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/uriloader/base/nsDocLoader.cpp | 3 +++ mozilla/uriloader/base/nsURILoader.cpp | 22 ++++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/mozilla/uriloader/base/nsDocLoader.cpp b/mozilla/uriloader/base/nsDocLoader.cpp index 237ca20ea59..2ba99f9164a 100644 --- a/mozilla/uriloader/base/nsDocLoader.cpp +++ b/mozilla/uriloader/base/nsDocLoader.cpp @@ -653,6 +653,9 @@ void nsDocLoaderImpl::FireOnEndDocumentLoad(nsDocLoaderImpl* aLoadInitiator, if (mParent) { mParent->FireOnEndDocumentLoad(aLoadInitiator, aDocChannel, aStatus); } + + // now forget about our progress listener... + mProgressListener = nsnull; } diff --git a/mozilla/uriloader/base/nsURILoader.cpp b/mozilla/uriloader/base/nsURILoader.cpp index a28b0554f03..684ed13fe1d 100644 --- a/mozilla/uriloader/base/nsURILoader.cpp +++ b/mozilla/uriloader/base/nsURILoader.cpp @@ -681,22 +681,24 @@ nsresult nsURILoader::SetupLoadCookie(nsISupports * aWindowContext, nsISupports nsLoadCookie * newLoadCookie = new nsLoadCookie(); if (newLoadCookie) { - newLoadCookie->Init(loadCookie); - - // bind the web progress listener (if there is one) to the web progress - // instance of the doc loader.. - nsCOMPtr docLoader (do_GetInterface(loadCookie)); - nsCOMPtr webProgress (do_QueryInterface(docLoader)); - nsCOMPtr webProgressListener (do_GetInterface(aWindowContext)); - if (webProgress && webProgressListener) - webProgress->AddProgressListener(webProgressListener); - + newLoadCookie->Init(loadCookie); rv = cntListener->SetLoadCookie (NS_STATIC_CAST(nsISupports *, (nsIInterfaceRequestor *) newLoadCookie)); newLoadCookie->QueryInterface(NS_GET_IID(nsISupports), getter_AddRefs(loadCookie)); } // if we created a new cookie } // if we don't have a load cookie already } // if we have a cntListener + // every time we do a load, we should reset the progress listener on it... + if (loadCookie) + { + // bind the web progress listener (if there is one) to the web progress + // instance of the doc loader.. + nsCOMPtr docLoader (do_GetInterface(loadCookie)); + nsCOMPtr webProgress (do_QueryInterface(docLoader)); + nsCOMPtr webProgressListener (do_GetInterface(aWindowContext)); + if (webProgress && webProgressListener) + webProgress->AddProgressListener(webProgressListener); + } *aLoadCookie = loadCookie; NS_IF_ADDREF(*aLoadCookie);