diff --git a/mozilla/gfx/public/nsIImageGroup.h b/mozilla/gfx/public/nsIImageGroup.h index 4107bbbfcb3..7a2558c268b 100644 --- a/mozilla/gfx/public/nsIImageGroup.h +++ b/mozilla/gfx/public/nsIImageGroup.h @@ -63,7 +63,7 @@ public: * Initialize an image group with a device context. All images * in this group will be decoded for the specified device context. */ - virtual nsresult Init(nsIDeviceContext *aDeviceContext, nsILoadGroup* aLoadGroup) = 0; + virtual nsresult Init(nsIDeviceContext *aDeviceContext, nsISupports *aLoadContext) = 0; /** * Add an observers to be informed of image group notifications. diff --git a/mozilla/gfx/src/nsImageGroup.cpp b/mozilla/gfx/src/nsImageGroup.cpp index f44fe26d3fa..a56433cb3ca 100644 --- a/mozilla/gfx/src/nsImageGroup.cpp +++ b/mozilla/gfx/src/nsImageGroup.cpp @@ -34,7 +34,6 @@ #include "il_util.h" #include "nsIDeviceContext.h" #include "nsIStreamListener.h" -#include "nsILoadGroup.h" #include "nsGfxCIID.h" static NS_DEFINE_IID(kIImageGroupIID, NS_IIMAGEGROUP_IID); @@ -46,7 +45,7 @@ public: ImageGroupImpl(nsIImageManager *aManager); virtual ~ImageGroupImpl(); - nsresult Init(nsIDeviceContext *aDeviceContext, nsILoadGroup* aLoadGroup); + nsresult Init(nsIDeviceContext *aDeviceContext, nsISupports * aLoadContext); NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW @@ -80,7 +79,6 @@ public: nsIDeviceContext *mDeviceContext; ilINetContext* mNetContext; nsIStreamListener** mListenerRequest; - nsILoadGroup* mLoadGroup; }; ImageGroupImpl::ImageGroupImpl(nsIImageManager *aManager) @@ -113,7 +111,6 @@ ImageGroupImpl::~ImageGroupImpl() NS_IF_RELEASE(mManager); NS_IF_RELEASE(mNetContext); - NS_IF_RELEASE(mLoadGroup); } NS_IMPL_ISUPPORTS(ImageGroupImpl, kIImageGroupIID) @@ -168,7 +165,7 @@ ReconnectHack(void* arg, nsIStreamListener* aListener) } nsresult -ImageGroupImpl::Init(nsIDeviceContext *aDeviceContext, nsILoadGroup* aLoadGroup) +ImageGroupImpl::Init(nsIDeviceContext *aDeviceContext, nsISupports *aLoadContext) { ilIImageRenderer *renderer; nsresult result; @@ -183,11 +180,8 @@ ImageGroupImpl::Init(nsIDeviceContext *aDeviceContext, nsILoadGroup* aLoadGroup) return NS_ERROR_OUT_OF_MEMORY; } - mLoadGroup = aLoadGroup; - NS_IF_ADDREF(mLoadGroup); - // Create an async net context - result = NS_NewImageNetContext(&mNetContext, mLoadGroup, ReconnectHack, this); + result = NS_NewImageNetContext(&mNetContext, aLoadContext, ReconnectHack, this); if (NS_OK != result) { return result; } diff --git a/mozilla/gfx/src/nsImageNet.h b/mozilla/gfx/src/nsImageNet.h index e08bb473dd2..8af4917fa83 100644 --- a/mozilla/gfx/src/nsImageNet.h +++ b/mozilla/gfx/src/nsImageNet.h @@ -33,7 +33,7 @@ typedef PRBool (*nsReconnectCB)(void* arg, nsIStreamListener* aListener); extern "C" NS_GFX_(nsresult) NS_NewImageNetContext(ilINetContext **aInstancePtrResult, - nsILoadGroup* aLoadGroup, + nsISupports* aLoadContext, nsReconnectCB aReconnectCallback, void* aReconnectArg); diff --git a/mozilla/gfx/src/nsImageNetContextAsync.cpp b/mozilla/gfx/src/nsImageNetContextAsync.cpp index 5667f1865c4..20b8b2700d1 100644 --- a/mozilla/gfx/src/nsImageNetContextAsync.cpp +++ b/mozilla/gfx/src/nsImageNetContextAsync.cpp @@ -58,7 +58,7 @@ class ImageConsumer; class ImageNetContextImpl : public ilINetContext { public: ImageNetContextImpl(NET_ReloadMethod aReloadPolicy, - nsILoadGroup* aLoadGroup, + nsISupports * aLoadContext, nsReconnectCB aReconnectCallback, void* aReconnectArg); virtual ~ImageNetContextImpl(); @@ -95,7 +95,7 @@ public: nsVoidArray *mRequests; NET_ReloadMethod mReloadPolicy; - nsWeakPtr mLoadGroup; + nsWeakPtr mLoadContext; nsReconnectCB mReconnectCallback; void* mReconnectArg; }; @@ -199,7 +199,9 @@ ImageConsumer::SetParentContentListener(nsIURIContentListener* aParent) NS_IMETHODIMP ImageConsumer::GetLoadCookie(nsISupports ** aLoadCookie) { - *aLoadCookie = nsnull; + nsCOMPtr loadContext = do_QueryReferent(mContext->mLoadContext); + *aLoadCookie = loadContext; + NS_IF_ADDREF(*aLoadCookie); return NS_OK; } @@ -504,13 +506,13 @@ ImageConsumer::~ImageConsumer() } ImageNetContextImpl::ImageNetContextImpl(NET_ReloadMethod aReloadPolicy, - nsILoadGroup* aLoadGroup, + nsISupports * aLoadContext, nsReconnectCB aReconnectCallback, void* aReconnectArg) { NS_INIT_REFCNT(); mRequests = nsnull; - mLoadGroup = getter_AddRefs(NS_GetWeakReference(aLoadGroup)); + mLoadContext = getter_AddRefs(NS_GetWeakReference(aLoadContext)); mReloadPolicy = aReloadPolicy; mReconnectCallback = aReconnectCallback; mReconnectArg = aReconnectArg; @@ -527,7 +529,6 @@ ImageNetContextImpl::~ImageNetContextImpl() } delete mRequests; } -/// NS_IF_RELEASE(mLoadGroup); } NS_IMPL_ISUPPORTS(ImageNetContextImpl, kIImageNetContextIID) @@ -536,14 +537,14 @@ ilINetContext* ImageNetContextImpl::Clone() { ilINetContext *cx; - nsCOMPtr group = do_QueryReferent(mLoadGroup); + nsCOMPtr loadContext = do_QueryReferent(mLoadContext); //mReconnectArg is ImageGroup. If GetURL is triggered //by timer for animation, ImageGroup may have been unloaded //before timer kicks off. //mReconnectCallback=nsnull; mReconnectArg=nsnull; - if (NS_NewImageNetContext(&cx, group, mReconnectCallback, mReconnectArg) == NS_OK) + if (NS_NewImageNetContext(&cx, loadContext, mReconnectCallback, mReconnectArg) == NS_OK) { return cx; } @@ -587,8 +588,9 @@ ImageNetContextImpl::CreateURL(const char *aURL, NET_ReloadMethod aReloadMethod) { ilIURL *url; - nsCOMPtr group = do_QueryReferent(mLoadGroup); - + + nsCOMPtr loadContext (do_QueryReferent(mLoadContext)); + nsCOMPtr group (do_GetInterface(loadContext)); if (NS_NewImageURL(&url, aURL, group) == NS_OK) { return url; @@ -666,7 +668,9 @@ ImageNetContextImpl::GetURL (ilIURL * aURL, || !(*mReconnectCallback)(mReconnectArg, ic)) { // first, create a channel for the protocol.... nsCOMPtr channel; - nsCOMPtr group = do_QueryReferent(mLoadGroup); + nsCOMPtr loadContext (do_QueryReferent(mLoadContext)); + nsCOMPtr group (do_GetInterface(loadContext)); + rv = NS_OpenURI(getter_AddRefs(channel), nsurl, group); if (NS_FAILED(rv)) goto error; @@ -736,7 +740,7 @@ ImageNetContextImpl::RequestDone(ImageConsumer *aConsumer, nsIChannel* channel, extern "C" NS_GFX_(nsresult) NS_NewImageNetContext(ilINetContext **aInstancePtrResult, - nsILoadGroup* aLoadGroup, + nsISupports * aLoadContext, nsReconnectCB aReconnectCallback, void* aReconnectArg) { @@ -746,7 +750,7 @@ NS_NewImageNetContext(ilINetContext **aInstancePtrResult, } ilINetContext *cx = new ImageNetContextImpl(TV_IMG_NTWK_SERVER, - aLoadGroup, + aLoadContext, aReconnectCallback, aReconnectArg); if (cx == nsnull) { diff --git a/mozilla/layout/base/nsPresContext.cpp b/mozilla/layout/base/nsPresContext.cpp index 6fb32373de6..fffd5793a31 100644 --- a/mozilla/layout/base/nsPresContext.cpp +++ b/mozilla/layout/base/nsPresContext.cpp @@ -32,13 +32,15 @@ #include "nsIRenderingContext.h" #include "nsEventStateManager.h" #include "nsIURL.h" -#include "nsILoadGroup.h" #include "nsIDocument.h" #include "nsIStyleContext.h" #include "nsLayoutAtoms.h" #include "nsILookAndFeel.h" #include "nsWidgetsCID.h" #include "nsIComponentManager.h" +#include "nsIURIContentListener.h" +#include "nsIInterfaceRequestor.h" + #ifdef _WIN32 #include #endif @@ -777,16 +779,14 @@ nsPresContext::GetImageGroup(nsIImageGroup** aResult) } // Initialize the image group - nsCOMPtr loadGroup; - nsCOMPtr doc; - if (NS_SUCCEEDED(mShell->GetDocument(getter_AddRefs(doc)))) { - NS_ASSERTION(doc, "expect document here"); - if (doc) { - doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup)); - } + nsCOMPtr loadHandler (do_GetInterface(mContainer, &rv)); + if (NS_SUCCEEDED(rv) && loadHandler) + { + nsCOMPtr loadContext; + loadHandler->GetLoadCookie(getter_AddRefs(loadContext)); + rv = mImageGroup->Init(mDeviceContext, loadContext); } - if (rv == NS_OK) - rv = mImageGroup->Init(mDeviceContext, loadGroup); + if (NS_OK != rv) { return rv; } diff --git a/mozilla/layout/base/src/nsPresContext.cpp b/mozilla/layout/base/src/nsPresContext.cpp index 6fb32373de6..fffd5793a31 100644 --- a/mozilla/layout/base/src/nsPresContext.cpp +++ b/mozilla/layout/base/src/nsPresContext.cpp @@ -32,13 +32,15 @@ #include "nsIRenderingContext.h" #include "nsEventStateManager.h" #include "nsIURL.h" -#include "nsILoadGroup.h" #include "nsIDocument.h" #include "nsIStyleContext.h" #include "nsLayoutAtoms.h" #include "nsILookAndFeel.h" #include "nsWidgetsCID.h" #include "nsIComponentManager.h" +#include "nsIURIContentListener.h" +#include "nsIInterfaceRequestor.h" + #ifdef _WIN32 #include #endif @@ -777,16 +779,14 @@ nsPresContext::GetImageGroup(nsIImageGroup** aResult) } // Initialize the image group - nsCOMPtr loadGroup; - nsCOMPtr doc; - if (NS_SUCCEEDED(mShell->GetDocument(getter_AddRefs(doc)))) { - NS_ASSERTION(doc, "expect document here"); - if (doc) { - doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup)); - } + nsCOMPtr loadHandler (do_GetInterface(mContainer, &rv)); + if (NS_SUCCEEDED(rv) && loadHandler) + { + nsCOMPtr loadContext; + loadHandler->GetLoadCookie(getter_AddRefs(loadContext)); + rv = mImageGroup->Init(mDeviceContext, loadContext); } - if (rv == NS_OK) - rv = mImageGroup->Init(mDeviceContext, loadGroup); + if (NS_OK != rv) { return rv; }