diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index 3386319a7fa..535f12cdc81 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -3015,12 +3015,17 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode) // onto it as opaque data. NS_ADDREF(this); + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); nsIUnicharStreamLoader* loader; rv = NS_NewUnicharStreamLoader(&loader, url, +#ifdef NECKO + loadGroup, +#endif (nsStreamCompleteFunc)nsDoneLoadingScript, (void *)this); NS_RELEASE(url); + NS_IF_RELEASE(loadGroup); if (NS_OK == rv) { rv = NS_ERROR_HTMLPARSER_BLOCK; } diff --git a/mozilla/content/html/style/src/nsCSSLoader.cpp b/mozilla/content/html/style/src/nsCSSLoader.cpp index d64de447dc9..4afab3aa15d 100644 --- a/mozilla/content/html/style/src/nsCSSLoader.cpp +++ b/mozilla/content/html/style/src/nsCSSLoader.cpp @@ -1066,8 +1066,14 @@ CSSLoaderImpl::LoadSheet(URLKey& aKey, SheetLoadData* aData) nsIURI* urlClone = CloneURL(aKey.mURL); // don't give the key to netlib, it munges it if (urlClone) { #endif - result = NS_NewUnicharStreamLoader(&loader, urlClone, DoneLoadingStyle, aData); + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); + result = NS_NewUnicharStreamLoader(&loader, urlClone, +#ifdef NECKO + loadGroup, +#endif + DoneLoadingStyle, aData); NS_RELEASE(urlClone); + NS_IF_RELEASE(loadGroup); if (NS_SUCCEEDED(result)) { mLoadingSheets.Put(&aKey, aData); // grab any pending alternates that have this URL @@ -1276,7 +1282,11 @@ CSSLoaderImpl::LoadAgentSheet(nsIURI* aURL, if (urlClone) { #endif #ifdef NECKO - result = NS_OpenURI(&in, urlClone); + nsILoadGroup* loadGroup = nsnull; + if (mDocument) { + loadGroup = mDocument->GetDocumentLoadGroup(); + } + result = NS_OpenURI(&in, urlClone, loadGroup); #else result = NS_OpenURL(urlClone, &in); #endif diff --git a/mozilla/content/xml/document/src/nsXMLContentSink.cpp b/mozilla/content/xml/document/src/nsXMLContentSink.cpp index f568e7e9977..59b3d7ea839 100644 --- a/mozilla/content/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/content/xml/document/src/nsXMLContentSink.cpp @@ -1868,11 +1868,16 @@ nsXMLContentSink::ProcessStartSCRIPTTag(const nsIParserNode& aNode) NS_ADDREF(this); nsIUnicharStreamLoader* loader; + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); rv = NS_NewUnicharStreamLoader(&loader, url, +#ifdef NECKO + loadGroup, +#endif (nsStreamCompleteFunc)nsDoneLoadingScript, (void *)this); NS_RELEASE(url); + NS_IF_RELEASE(loadGroup); if (NS_OK == rv) { rv = NS_ERROR_HTMLPARSER_BLOCK; } diff --git a/mozilla/extensions/pics/src/nsPICS.cpp b/mozilla/extensions/pics/src/nsPICS.cpp index 3074c09dc5e..c1a6d3a9aee 100644 --- a/mozilla/extensions/pics/src/nsPICS.cpp +++ b/mozilla/extensions/pics/src/nsPICS.cpp @@ -245,8 +245,9 @@ private: void CheckForGenericRatings(char *url_address, PICS_RatingsStruct **rs, PICS_PassFailReturnVal *status); - nsresult GetRootURL(nsIURI* aURL); - +#if 0 // XXX no longer called? + nsresult GetRootURL(nsIURI* aURL); +#endif }; static nsPICS* gPICS = nsnull; // The one-and-only PICSService @@ -1518,6 +1519,7 @@ nsPICS::PreferenceChanged(const char* aPrefName) GetUserPreferences(); } +#if 0 //#define UA_CSS_URL "resource:/res/ua.css" #define UA_CSS_URL "http://www.w3.org/" nsresult @@ -1547,7 +1549,7 @@ nsPICS::GetRootURL(nsIURI* aURL) return rv; mParser->Parse(aURL); #ifdef NECKO - rv = NS_OpenURI(lsnr, aURL); + rv = NS_OpenURI(lsnr, nsnull, aURL, nsnull); // XXX need the nsILoadGroup here! #else rv = NS_OpenURL(aURL, lsnr); #endif @@ -1557,7 +1559,7 @@ nsPICS::GetRootURL(nsIURI* aURL) return rv; } - +#endif //////////////////////////////////////////////////////////////////////////////// // nsPICSFactory Implementation diff --git a/mozilla/gfx/src/nsImageNetContextAsync.cpp b/mozilla/gfx/src/nsImageNetContextAsync.cpp index 96d7846c3c2..89b787cfab0 100644 --- a/mozilla/gfx/src/nsImageNetContextAsync.cpp +++ b/mozilla/gfx/src/nsImageNetContextAsync.cpp @@ -425,10 +425,8 @@ ImageNetContextImpl::ImageNetContextImpl(NET_ReloadMethod aReloadPolicy, { NS_INIT_REFCNT(); mRequests = nsnull; -#ifndef NECKO mLoadGroup = aLoadGroup; NS_IF_ADDREF(mLoadGroup); -#endif mReloadPolicy = aReloadPolicy; mReconnectCallback = aReconnectCallback; mReconnectArg = aReconnectArg; @@ -445,9 +443,7 @@ ImageNetContextImpl::~ImageNetContextImpl() } delete mRequests; } -#ifndef NECKO NS_IF_RELEASE(mLoadGroup); -#endif } NS_IMPL_ISUPPORTS(ImageNetContextImpl, kIImageNetContextIID) @@ -577,7 +573,7 @@ ImageNetContextImpl::GetURL (ilIURL * aURL, } else { #ifdef NECKO - nsresult rv = NS_OpenURI(ic, nsurl); + nsresult rv = NS_OpenURI(ic, nsnull, nsurl, mLoadGroup); #else nsresult rv = NS_OpenURL(nsurl, ic); #endif diff --git a/mozilla/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/htmlparser/src/nsExpatTokenizer.cpp index b11df3dd636..cf8ed189589 100644 --- a/mozilla/htmlparser/src/nsExpatTokenizer.cpp +++ b/mozilla/htmlparser/src/nsExpatTokenizer.cpp @@ -500,7 +500,7 @@ nsExpatTokenizer::OpenInputStream(nsString2& aURLStr, nsIInputStream*& in) ret = NS_NewURI(&uri, aURLStr); if (NS_FAILED(ret)) return ret; - ret = NS_OpenURI(&in, uri); + ret = NS_OpenURI(&in, uri, nsnull); // XXX need to pass the document's nsILoadGroup here! NS_RELEASE(uri); #endif // NECKO return ret; diff --git a/mozilla/intl/strres/src/nsStringBundle.cpp b/mozilla/intl/strres/src/nsStringBundle.cpp index 58a1932fef6..84041e6c683 100644 --- a/mozilla/intl/strres/src/nsStringBundle.cpp +++ b/mozilla/intl/strres/src/nsStringBundle.cpp @@ -28,8 +28,6 @@ #ifndef NECKO #include "nsINetService.h" #else -#include "nsIIOService.h" -#include "nsIChannel.h" #include "nsNeckoUtil.h" #endif // NECKO @@ -53,9 +51,6 @@ NS_DEFINE_IID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); #ifndef NECKO static NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID); static NS_DEFINE_IID(kNetServiceCID, NS_NETSERVICE_CID); -#else -static NS_DEFINE_IID(kIIOServiceIID, NS_IIOSERVICE_IID); -static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO static NS_DEFINE_IID(kIPersistentPropertiesIID, NS_IPERSISTENTPROPERTIES_IID); @@ -146,16 +141,7 @@ nsStringBundle::nsStringBundle(nsIURI* aURL, nsILocale* aLocale, #else // NECKO nsresult rv; - NS_WITH_SERVICE(nsIIOService, pNetService, kIOServiceCID, &rv); - if (NS_FAILED(rv)) { -#ifdef NS_DEBUG - printf("cannot get io service\n"); -#endif - *aResult = rv; - return; - } - - rv = NS_OpenURI(&in, aURL); + rv = NS_OpenURI(&in, aURL, nsnull); // XXX need to pass the document's nsILoadGroup here! if (NS_FAILED(rv)) { #ifdef NS_DEBUG printf("cannot open uri\n"); @@ -323,7 +309,7 @@ nsStringBundle::OpenInputStream(nsString2& aURLStr, nsIInputStream*& in) ret = NS_NewURI(&uri, aURLStr); if (NS_FAILED(ret)) return ret; - ret = NS_OpenURI(&in, uri); + ret = NS_OpenURI(&in, uri, nsnull); // XXX need to pass the document's nsILoadGroup here! NS_RELEASE(uri); #endif // NECKO return ret; diff --git a/mozilla/intl/uconv/src/nsURLProperties.cpp b/mozilla/intl/uconv/src/nsURLProperties.cpp index ec0367888ff..c6abf65f95c 100644 --- a/mozilla/intl/uconv/src/nsURLProperties.cpp +++ b/mozilla/intl/uconv/src/nsURLProperties.cpp @@ -25,8 +25,6 @@ #include "nsINetService.h" #else #include "nsNeckoUtil.h" -#include "nsIIOService.h" -#include "nsIChannel.h" #endif // NECKO static NS_DEFINE_IID(kIPersistentPropertiesIID, NS_IPERSISTENTPROPERTIES_IID); @@ -34,9 +32,6 @@ static NS_DEFINE_IID(kIPersistentPropertiesIID, NS_IPERSISTENTPROPERTIES_IID); #ifndef NECKO static NS_DEFINE_IID(kINetServiceIID, NS_INETSERVICE_IID); static NS_DEFINE_IID(kNetServiceCID, NS_NETSERVICE_CID); -#else -static NS_DEFINE_IID(kIIOServiceIID, NS_IIOSERVICE_IID); -static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO nsURLProperties::nsURLProperties(nsString& aUrl) @@ -59,21 +54,18 @@ nsURLProperties::nsURLProperties(nsString& aUrl) if(NS_SUCCEEDED(res)) res = pNetService->OpenBlockingStream(url, nsnull, &in); #else - NS_WITH_SERVICE(nsIIOService, pNetService, kIOServiceCID, &res); - if (NS_FAILED(res)) return; - res = NS_NewURI(&url, aUrl, nsnull); if (NS_FAILED(res)) return; - res = NS_OpenURI(&in, url, nsnull); + res = NS_OpenURI(&in, url, nsnull); // XXX no nsILoadGroup here, so we can't cancel this load! NS_RELEASE(url); if (NS_FAILED(res)) return; #endif // NECKO if(NS_SUCCEEDED(res)) res = nsComponentManager::CreateInstance(kPersistentPropertiesCID, NULL, - kIPersistentPropertiesIID, - (void**)&mDelegate); + kIPersistentPropertiesIID, + (void**)&mDelegate); if(NS_SUCCEEDED(res)) { if(in) { diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp index 3386319a7fa..535f12cdc81 100644 --- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp @@ -3015,12 +3015,17 @@ HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode& aNode) // onto it as opaque data. NS_ADDREF(this); + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); nsIUnicharStreamLoader* loader; rv = NS_NewUnicharStreamLoader(&loader, url, +#ifdef NECKO + loadGroup, +#endif (nsStreamCompleteFunc)nsDoneLoadingScript, (void *)this); NS_RELEASE(url); + NS_IF_RELEASE(loadGroup); if (NS_OK == rv) { rv = NS_ERROR_HTMLPARSER_BLOCK; } diff --git a/mozilla/layout/html/style/src/nsCSSLoader.cpp b/mozilla/layout/html/style/src/nsCSSLoader.cpp index d64de447dc9..4afab3aa15d 100644 --- a/mozilla/layout/html/style/src/nsCSSLoader.cpp +++ b/mozilla/layout/html/style/src/nsCSSLoader.cpp @@ -1066,8 +1066,14 @@ CSSLoaderImpl::LoadSheet(URLKey& aKey, SheetLoadData* aData) nsIURI* urlClone = CloneURL(aKey.mURL); // don't give the key to netlib, it munges it if (urlClone) { #endif - result = NS_NewUnicharStreamLoader(&loader, urlClone, DoneLoadingStyle, aData); + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); + result = NS_NewUnicharStreamLoader(&loader, urlClone, +#ifdef NECKO + loadGroup, +#endif + DoneLoadingStyle, aData); NS_RELEASE(urlClone); + NS_IF_RELEASE(loadGroup); if (NS_SUCCEEDED(result)) { mLoadingSheets.Put(&aKey, aData); // grab any pending alternates that have this URL @@ -1276,7 +1282,11 @@ CSSLoaderImpl::LoadAgentSheet(nsIURI* aURL, if (urlClone) { #endif #ifdef NECKO - result = NS_OpenURI(&in, urlClone); + nsILoadGroup* loadGroup = nsnull; + if (mDocument) { + loadGroup = mDocument->GetDocumentLoadGroup(); + } + result = NS_OpenURI(&in, urlClone, loadGroup); #else result = NS_OpenURL(urlClone, &in); #endif diff --git a/mozilla/layout/html/tests/TestCSSParser.cpp b/mozilla/layout/html/tests/TestCSSParser.cpp index 7752513d4f6..9b23f570a20 100644 --- a/mozilla/layout/html/tests/TestCSSParser.cpp +++ b/mozilla/layout/html/tests/TestCSSParser.cpp @@ -174,7 +174,7 @@ int main(int argc, char** argv) #ifndef NECKO rv = NS_OpenURL(url, &in); #else - rv = NS_OpenURI(&in, url); + rv = NS_OpenURI(&in, url, nsnull); #endif // NECKO if (rv != NS_OK) { printf("open of url('%s') failed: error=%x\n", urlName, rv); diff --git a/mozilla/layout/html/tests/TestCSSScanner.cpp b/mozilla/layout/html/tests/TestCSSScanner.cpp index 3d361bea3d0..8a5a91b7961 100644 --- a/mozilla/layout/html/tests/TestCSSScanner.cpp +++ b/mozilla/layout/html/tests/TestCSSScanner.cpp @@ -63,7 +63,7 @@ int main(int argc, char** argv) #ifndef NECKO rv = NS_OpenURL(url, &in); #else - rv = NS_OpenURI(&in, url); + rv = NS_OpenURI(&in, url, nsnull); #endif // NECKO if (rv != NS_OK) { printf("open of url('%s') failed: error=%x\n", urlName, rv); diff --git a/mozilla/layout/style/nsCSSLoader.cpp b/mozilla/layout/style/nsCSSLoader.cpp index d64de447dc9..4afab3aa15d 100644 --- a/mozilla/layout/style/nsCSSLoader.cpp +++ b/mozilla/layout/style/nsCSSLoader.cpp @@ -1066,8 +1066,14 @@ CSSLoaderImpl::LoadSheet(URLKey& aKey, SheetLoadData* aData) nsIURI* urlClone = CloneURL(aKey.mURL); // don't give the key to netlib, it munges it if (urlClone) { #endif - result = NS_NewUnicharStreamLoader(&loader, urlClone, DoneLoadingStyle, aData); + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); + result = NS_NewUnicharStreamLoader(&loader, urlClone, +#ifdef NECKO + loadGroup, +#endif + DoneLoadingStyle, aData); NS_RELEASE(urlClone); + NS_IF_RELEASE(loadGroup); if (NS_SUCCEEDED(result)) { mLoadingSheets.Put(&aKey, aData); // grab any pending alternates that have this URL @@ -1276,7 +1282,11 @@ CSSLoaderImpl::LoadAgentSheet(nsIURI* aURL, if (urlClone) { #endif #ifdef NECKO - result = NS_OpenURI(&in, urlClone); + nsILoadGroup* loadGroup = nsnull; + if (mDocument) { + loadGroup = mDocument->GetDocumentLoadGroup(); + } + result = NS_OpenURI(&in, urlClone, loadGroup); #else result = NS_OpenURL(urlClone, &in); #endif diff --git a/mozilla/layout/xml/document/src/nsXMLContentSink.cpp b/mozilla/layout/xml/document/src/nsXMLContentSink.cpp index f568e7e9977..59b3d7ea839 100644 --- a/mozilla/layout/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/layout/xml/document/src/nsXMLContentSink.cpp @@ -1868,11 +1868,16 @@ nsXMLContentSink::ProcessStartSCRIPTTag(const nsIParserNode& aNode) NS_ADDREF(this); nsIUnicharStreamLoader* loader; + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); rv = NS_NewUnicharStreamLoader(&loader, url, +#ifdef NECKO + loadGroup, +#endif (nsStreamCompleteFunc)nsDoneLoadingScript, (void *)this); NS_RELEASE(url); + NS_IF_RELEASE(loadGroup); if (NS_OK == rv) { rv = NS_ERROR_HTMLPARSER_BLOCK; } diff --git a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp index 404c7c85e1c..700d94967c2 100644 --- a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp @@ -39,6 +39,7 @@ #include "nsCOMPtr.h" #include "nsNeckoUtil.h" #include "nsIProgressEventSink.h" +#include "nsIDocument.h" #endif // NECKO #include "nsIServiceManager.h" @@ -392,18 +393,18 @@ public: NS_DECL_ISUPPORTS #ifdef NECKO - // nsIProgressEventSink methods: - NS_IMETHOD OnProgress(nsIChannel* channel, nsISupports* context, - PRUint32 Progress, PRUint32 ProgressMax); - NS_IMETHOD OnStatus(nsIChannel* channel, nsISupports* context, - const PRUnichar* aMmsg); - // nsIStreamObserver methods: - NS_IMETHOD OnStartRequest(nsIChannel* channel, nsISupports *ctxt); - NS_IMETHOD OnStopRequest(nsIChannel* channel, nsISupports *ctxt, - nsresult status, const PRUnichar *errorMsg); - // nsIStreamListener methods: - NS_IMETHOD OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, - nsIInputStream *inStr, PRUint32 sourceOffset, PRUint32 count); + // nsIProgressEventSink methods: + NS_IMETHOD OnProgress(nsIChannel* channel, nsISupports* context, + PRUint32 Progress, PRUint32 ProgressMax); + NS_IMETHOD OnStatus(nsIChannel* channel, nsISupports* context, + const PRUnichar* aMmsg); + // nsIStreamObserver methods: + NS_IMETHOD OnStartRequest(nsIChannel* channel, nsISupports *ctxt); + NS_IMETHOD OnStopRequest(nsIChannel* channel, nsISupports *ctxt, + nsresult status, const PRUnichar *errorMsg); + // nsIStreamListener methods: + NS_IMETHOD OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, + nsIInputStream *inStr, PRUint32 sourceOffset, PRUint32 count); #else //nsIStreamObserver interface @@ -436,6 +437,10 @@ public: nsresult OnFileAvailable(const char* aFilename); +#ifdef NECKO + nsILoadGroup* GetLoadGroup(); +#endif + private: nsresult SetUpCache(nsIURI* aURL); @@ -1131,7 +1136,10 @@ nsresult nsPluginStreamListenerPeer::SetUpCache(nsIURI* aURL) { nsPluginCacheListener* cacheListener = new nsPluginCacheListener(this); #ifdef NECKO - return NS_OpenURI(cacheListener, aURL); + nsILoadGroup* loadGroup = GetLoadGroup(); + nsresult rv = NS_OpenURI(cacheListener, nsnull, aURL, loadGroup); + NS_IF_RELEASE(loadGroup); + return rv; #else return NS_OpenURL(aURL, cacheListener); #endif @@ -1201,6 +1209,21 @@ nsPluginStreamListenerPeer::OnFileAvailable(const char* aFilename) return rv; } +#ifdef NECKO +nsILoadGroup* +nsPluginStreamListenerPeer::GetLoadGroup() +{ + nsILoadGroup* loadGroup = nsnull; + nsIDocument* doc; + nsresult rv = mOwner->GetDocument(&doc); + if (NS_SUCCEEDED(rv)) { + loadGroup = doc->GetDocumentLoadGroup(); + NS_RELEASE(doc); + } + return loadGroup; +} +#endif + /////////////////////////////////////////////////////////////////////////////////////////////////////// nsPluginHostImpl::nsPluginHostImpl(nsIServiceManager *serviceMgr) @@ -2253,7 +2276,9 @@ NS_IMETHODIMP nsPluginHostImpl::NewPluginURLStream(const nsString& aURL, if (NS_OK == rv) { #ifdef NECKO - rv = NS_OpenURI(listenerPeer, url); + nsILoadGroup* loadGroup = listenerPeer->GetLoadGroup(); + rv = NS_OpenURI(listenerPeer, nsnull, url, loadGroup); + NS_IF_RELEASE(loadGroup); #else rv = NS_OpenURL(url, listenerPeer); #endif @@ -2307,7 +2332,9 @@ nsresult nsPluginHostImpl::NewEmbededPluginStream(nsIURI* aURL, if (NS_OK == rv) { #ifdef NECKO - rv = NS_OpenURI(listener, aURL); + nsILoadGroup* loadGroup = listener->GetLoadGroup(); + rv = NS_OpenURI(listener, nsnull, aURL, loadGroup); + NS_IF_RELEASE(loadGroup); #else rv = NS_OpenURL(aURL, listener); #endif diff --git a/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp b/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp index 404c7c85e1c..700d94967c2 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp @@ -39,6 +39,7 @@ #include "nsCOMPtr.h" #include "nsNeckoUtil.h" #include "nsIProgressEventSink.h" +#include "nsIDocument.h" #endif // NECKO #include "nsIServiceManager.h" @@ -392,18 +393,18 @@ public: NS_DECL_ISUPPORTS #ifdef NECKO - // nsIProgressEventSink methods: - NS_IMETHOD OnProgress(nsIChannel* channel, nsISupports* context, - PRUint32 Progress, PRUint32 ProgressMax); - NS_IMETHOD OnStatus(nsIChannel* channel, nsISupports* context, - const PRUnichar* aMmsg); - // nsIStreamObserver methods: - NS_IMETHOD OnStartRequest(nsIChannel* channel, nsISupports *ctxt); - NS_IMETHOD OnStopRequest(nsIChannel* channel, nsISupports *ctxt, - nsresult status, const PRUnichar *errorMsg); - // nsIStreamListener methods: - NS_IMETHOD OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, - nsIInputStream *inStr, PRUint32 sourceOffset, PRUint32 count); + // nsIProgressEventSink methods: + NS_IMETHOD OnProgress(nsIChannel* channel, nsISupports* context, + PRUint32 Progress, PRUint32 ProgressMax); + NS_IMETHOD OnStatus(nsIChannel* channel, nsISupports* context, + const PRUnichar* aMmsg); + // nsIStreamObserver methods: + NS_IMETHOD OnStartRequest(nsIChannel* channel, nsISupports *ctxt); + NS_IMETHOD OnStopRequest(nsIChannel* channel, nsISupports *ctxt, + nsresult status, const PRUnichar *errorMsg); + // nsIStreamListener methods: + NS_IMETHOD OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, + nsIInputStream *inStr, PRUint32 sourceOffset, PRUint32 count); #else //nsIStreamObserver interface @@ -436,6 +437,10 @@ public: nsresult OnFileAvailable(const char* aFilename); +#ifdef NECKO + nsILoadGroup* GetLoadGroup(); +#endif + private: nsresult SetUpCache(nsIURI* aURL); @@ -1131,7 +1136,10 @@ nsresult nsPluginStreamListenerPeer::SetUpCache(nsIURI* aURL) { nsPluginCacheListener* cacheListener = new nsPluginCacheListener(this); #ifdef NECKO - return NS_OpenURI(cacheListener, aURL); + nsILoadGroup* loadGroup = GetLoadGroup(); + nsresult rv = NS_OpenURI(cacheListener, nsnull, aURL, loadGroup); + NS_IF_RELEASE(loadGroup); + return rv; #else return NS_OpenURL(aURL, cacheListener); #endif @@ -1201,6 +1209,21 @@ nsPluginStreamListenerPeer::OnFileAvailable(const char* aFilename) return rv; } +#ifdef NECKO +nsILoadGroup* +nsPluginStreamListenerPeer::GetLoadGroup() +{ + nsILoadGroup* loadGroup = nsnull; + nsIDocument* doc; + nsresult rv = mOwner->GetDocument(&doc); + if (NS_SUCCEEDED(rv)) { + loadGroup = doc->GetDocumentLoadGroup(); + NS_RELEASE(doc); + } + return loadGroup; +} +#endif + /////////////////////////////////////////////////////////////////////////////////////////////////////// nsPluginHostImpl::nsPluginHostImpl(nsIServiceManager *serviceMgr) @@ -2253,7 +2276,9 @@ NS_IMETHODIMP nsPluginHostImpl::NewPluginURLStream(const nsString& aURL, if (NS_OK == rv) { #ifdef NECKO - rv = NS_OpenURI(listenerPeer, url); + nsILoadGroup* loadGroup = listenerPeer->GetLoadGroup(); + rv = NS_OpenURI(listenerPeer, nsnull, url, loadGroup); + NS_IF_RELEASE(loadGroup); #else rv = NS_OpenURL(url, listenerPeer); #endif @@ -2307,7 +2332,9 @@ nsresult nsPluginHostImpl::NewEmbededPluginStream(nsIURI* aURL, if (NS_OK == rv) { #ifdef NECKO - rv = NS_OpenURI(listener, aURL); + nsILoadGroup* loadGroup = listener->GetLoadGroup(); + rv = NS_OpenURI(listener, nsnull, aURL, loadGroup); + NS_IF_RELEASE(loadGroup); #else rv = NS_OpenURL(aURL, listener); #endif diff --git a/mozilla/netwerk/base/public/nsILoadGroup.idl b/mozilla/netwerk/base/public/nsILoadGroup.idl index b6fb5beb2e8..d9c444cdbcb 100644 --- a/mozilla/netwerk/base/public/nsILoadGroup.idl +++ b/mozilla/netwerk/base/public/nsILoadGroup.idl @@ -28,8 +28,6 @@ interface nsIStreamObserver; [scriptable, uuid(19845248-29ab-11d3-8cce-0060b0fc14a3)] interface nsILoadGroup : nsIRequest { - void Init(in nsILoadGroup parent); - /** * Accesses the default load attributes for the group, returned as * a flag word. Setting the default load attributes will cause them @@ -86,7 +84,6 @@ interface nsILoadGroup : nsIRequest * Enumerator element type: nsILoadGroup. */ readonly attribute nsISimpleEnumerator SubGroups; - }; %{C++ diff --git a/mozilla/netwerk/base/src/nsIOService.cpp b/mozilla/netwerk/base/src/nsIOService.cpp index c83ac7c2802..414da8d6b45 100644 --- a/mozilla/netwerk/base/src/nsIOService.cpp +++ b/mozilla/netwerk/base/src/nsIOService.cpp @@ -334,12 +334,6 @@ nsIOService::NewLoadGroup(nsILoadGroup* parent, nsILoadGroup **result) rv = nsLoadGroup::Create(nsnull, nsCOMTypeInfo::GetIID(), (void**)&group); if (NS_FAILED(rv)) return rv; - - rv = group->Init(parent); - if (NS_FAILED(rv)) { - NS_RELEASE(group); - return rv; - } *result = group; return NS_OK; } diff --git a/mozilla/netwerk/base/src/nsLoadGroup.cpp b/mozilla/netwerk/base/src/nsLoadGroup.cpp index 1e920dfc71f..5fec9c987ca 100644 --- a/mozilla/netwerk/base/src/nsLoadGroup.cpp +++ b/mozilla/netwerk/base/src/nsLoadGroup.cpp @@ -22,12 +22,141 @@ #include "nsIServiceManager.h" #include "nsISupportsArray.h" #include "nsEnumeratorUtils.h" +#include "nsCOMPtr.h" +static NS_DEFINE_CID(kLoadGroupCID, NS_LOADGROUP_CID); static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); //////////////////////////////////////////////////////////////////////////////// +class nsLoadGroupEntry : public nsIStreamListener +{ +protected: + typedef nsresult (*PropagateUpFun)(nsIStreamObserver* obs, void* closure); + + nsresult PropagateUp(PropagateUpFun fun, void* closure) { + nsresult rv; + PRUint32 i; + + for (nsLoadGroup* group = mGroup; group != nsnull; group = group->mParent) { + PRUint32 count = 0; + if (group->mObservers) { + rv = group->mObservers->Count(&count); + if (NS_FAILED(rv)) return rv; + } + for (i = 0; i < count; i++) { + nsIStreamObserver* obs = + NS_STATIC_CAST(nsIStreamObserver*, group->mObservers->ElementAt(i)); + if (obs == nsnull) + return NS_ERROR_FAILURE; + rv = fun(obs, closure); + NS_RELEASE(obs); + if (NS_FAILED(rv)) return rv; + } + } + return NS_OK; + } + + struct OnStartRequestArgs { + nsIChannel* channel; + nsISupports* context; + }; + + static nsresult + OnStartRequestFun(nsIStreamObserver* obs, void* closure) { + OnStartRequestArgs* args = (OnStartRequestArgs*)closure; + return obs->OnStartRequest(args->channel, args->context); + } + + struct OnStopRequestArgs { + nsIChannel* channel; + nsISupports* ctxt; + nsresult status; + const PRUnichar* errorMsg; + }; + + static nsresult + OnStopRequestFun(nsIStreamObserver* obs, void* closure) { + OnStopRequestArgs* args = (OnStopRequestArgs*)closure; + return obs->OnStopRequest(args->channel, args->ctxt, + args->status, args->errorMsg); + } + + struct OnDataAvailableArgs { + nsIChannel* channel; + nsISupports* ctxt; + nsIInputStream *inStr; + PRUint32 sourceOffset; + PRUint32 count; + }; + + static nsresult + OnDataAvailableFun(nsIStreamObserver* obs, void* closure) { + OnDataAvailableArgs* args = (OnDataAvailableArgs*)closure; + nsIStreamListener* l = NS_STATIC_CAST(nsIStreamListener*, obs); + return l->OnDataAvailable(args->channel, args->ctxt, args->inStr, + args->sourceOffset, args->count); + } + +public: + NS_DECL_ISUPPORTS + + // nsIStreamObserver methods: + NS_IMETHOD OnStartRequest(nsIChannel* channel, nsISupports *ctxt) { + OnStartRequestArgs args; + args.channel = channel; + args.context = ctxt; + return PropagateUp(OnStartRequestFun, &args); + } + + NS_IMETHOD OnStopRequest(nsIChannel* channel, nsISupports *ctxt, nsresult status, + const PRUnichar *errorMsg) { + OnStopRequestArgs args; + args.channel = channel; + args.ctxt = ctxt; + args.status = status; + args.errorMsg = errorMsg; + return PropagateUp(OnStartRequestFun, &args); + } + + // nsIStreamListener methods: + NS_IMETHOD OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, nsIInputStream *inStr, + PRUint32 sourceOffset, PRUint32 count) { + OnDataAvailableArgs args; + args.channel = channel; + args.ctxt = ctxt; + args.inStr = inStr; + args.sourceOffset = sourceOffset; + args.count = count; + return PropagateUp(OnDataAvailableFun, &args); + } + + // nsLoadGroupEntry methods: + nsLoadGroupEntry(nsLoadGroup* group, nsIChannel* channel, nsISupports* ctxt) + : mGroup(group), mChannel(channel), mContext(ctxt) { + NS_INIT_REFCNT(); + NS_ADDREF(mGroup); + NS_ADDREF(mChannel); + NS_IF_ADDREF(mContext); + } + + virtual ~nsLoadGroupEntry() { + NS_RELEASE(mGroup); + NS_RELEASE(mChannel); + NS_IF_RELEASE(mContext); + } + +protected: + nsLoadGroup* mGroup; + nsIChannel* mChannel; + nsISupports* mContext; +}; + +NS_IMPL_ISUPPORTS(nsLoadGroupEntry, nsCOMTypeInfo::GetIID()); + +//////////////////////////////////////////////////////////////////////////////// + nsLoadGroup::nsLoadGroup(nsISupports* outer) : mChannels(nsnull), mSubGroups(nsnull), mObservers(nsnull), mDefaultLoadAttributes(nsIChannel::LOAD_NORMAL), @@ -65,7 +194,8 @@ NS_IMETHODIMP nsLoadGroup::AggregatedQueryInterface(const nsIID& aIID, void** aInstancePtr) { NS_ASSERTION(aInstancePtr, "no instance pointer"); - if (aIID.Equals(nsCOMTypeInfo::GetIID()) || + if (aIID.Equals(kLoadGroupCID) || // for internal use only (to set parent) + aIID.Equals(nsCOMTypeInfo::GetIID()) || aIID.Equals(nsCOMTypeInfo::GetIID()) || aIID.Equals(nsCOMTypeInfo::GetIID())) { *aInstancePtr = NS_STATIC_CAST(nsILoadGroup*, this); @@ -190,19 +320,6 @@ nsLoadGroup::Resume() //////////////////////////////////////////////////////////////////////////////// // nsILoadGroup methods: -NS_IMETHODIMP -nsLoadGroup::Init(nsILoadGroup *parent) -{ -// mParent = parent; // weak ref - nsresult rv; - - if (parent) { - rv = parent->AddSubGroup(this); // XXX - if (NS_FAILED(rv)) return rv; - } - return NS_OK; -} - NS_IMETHODIMP nsLoadGroup::GetDefaultLoadAttributes(PRUint32 *aDefaultLoadAttributes) { @@ -282,8 +399,15 @@ nsLoadGroup::GetObservers(nsISimpleEnumerator * *aObservers) NS_IMETHODIMP nsLoadGroup::AddSubGroup(nsILoadGroup *group) { -// group->mParent = this; // XXX - nsresult rv; + // set the parent pointer + nsLoadGroup* subGroup; + nsresult rv = group->QueryInterface(kLoadGroupCID, (void**)&subGroup); + NS_ASSERTION(NS_SUCCEEDED(rv), "nsLoadGroup can't deal with other implementations yet"); + if (NS_FAILED(rv)) + return rv; + subGroup->mParent = this; // weak ref -- don't AddRef + NS_RELEASE(subGroup); + if (mSubGroups == nsnull) { rv = NS_NewISupportsArray(&mSubGroups); if (NS_FAILED(rv)) return rv; @@ -295,7 +419,16 @@ NS_IMETHODIMP nsLoadGroup::RemoveSubGroup(nsILoadGroup *group) { NS_ASSERTION(mSubGroups, "Forgot to call AddSubGroup"); -// group->mParent = nsnull; // XXX + + // clear the parent pointer + nsLoadGroup* subGroup; + nsresult rv = group->QueryInterface(kLoadGroupCID, (void**)&subGroup); + NS_ASSERTION(NS_SUCCEEDED(rv), "nsLoadGroup can't deal with other implementations yet"); + if (NS_FAILED(rv)) + return rv; + subGroup->mParent = nsnull; // weak ref -- don't Release + NS_RELEASE(subGroup); + return mSubGroups->RemoveElement(group); } @@ -311,114 +444,3 @@ nsLoadGroup::GetSubGroups(nsISimpleEnumerator * *aSubGroups) } //////////////////////////////////////////////////////////////////////////////// -// nsIStreamObserver methods: - -nsresult -nsLoadGroup::PropagateUp(PropagateUpFun fun, void* closure) -{ - nsresult rv; - PRUint32 i; - - for (nsLoadGroup* group = this; group != nsnull; group = group->mParent) { - PRUint32 count = 0; - if (group->mObservers) { - rv = group->mObservers->Count(&count); - if (NS_FAILED(rv)) return rv; - } - for (i = 0; i < count; i++) { - nsIStreamObserver* obs = - NS_STATIC_CAST(nsIStreamObserver*, group->mObservers->ElementAt(i)); - if (obs == nsnull) - return NS_ERROR_FAILURE; - rv = fun(obs, closure); - NS_RELEASE(obs); - if (NS_FAILED(rv)) return rv; - } - } - return NS_OK; -} - -struct OnStartRequestArgs { - nsIChannel* channel; - nsISupports* context; -}; - -static nsresult -OnStartRequestFun(nsIStreamObserver* obs, void* closure) -{ - OnStartRequestArgs* args = (OnStartRequestArgs*)closure; - return obs->OnStartRequest(args->channel, args->context); -} - -NS_IMETHODIMP -nsLoadGroup::OnStartRequest(nsIChannel* channel, nsISupports *ctxt) -{ - OnStartRequestArgs args; - args.channel = channel; - args.context = ctxt; - return PropagateUp(OnStartRequestFun, &args); -} - -struct OnStopRequestArgs { - nsIChannel* channel; - nsISupports* ctxt; - nsresult status; - const PRUnichar* errorMsg; -}; - -static nsresult -OnStopRequestFun(nsIStreamObserver* obs, void* closure) -{ - OnStopRequestArgs* args = (OnStopRequestArgs*)closure; - return obs->OnStopRequest(args->channel, args->ctxt, - args->status, args->errorMsg); -} - -NS_IMETHODIMP -nsLoadGroup::OnStopRequest(nsIChannel* channel, nsISupports *ctxt, - nsresult status, const PRUnichar *errorMsg) -{ - OnStopRequestArgs args; - args.channel = channel; - args.ctxt = ctxt; - args.status = status; - args.errorMsg = errorMsg; - return PropagateUp(OnStartRequestFun, &args); -} - -//////////////////////////////////////////////////////////////////////////////// -// nsIStreamListener methods: - -struct OnDataAvailableArgs { - nsIChannel* channel; - nsISupports* ctxt; - nsIInputStream *inStr; - PRUint32 sourceOffset; - PRUint32 count; -}; - -static nsresult -OnDataAvailableFun(nsIStreamObserver* obs, void* closure) -{ - OnDataAvailableArgs* args = (OnDataAvailableArgs*)closure; - nsIStreamListener* l = NS_STATIC_CAST(nsIStreamListener*, obs); - return l->OnDataAvailable(args->channel, args->ctxt, args->inStr, - args->sourceOffset, args->count); -} - -NS_IMETHODIMP -nsLoadGroup::OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, - nsIInputStream *inStr, - PRUint32 sourceOffset, - PRUint32 count) -{ - OnDataAvailableArgs args; - args.channel = channel; - args.ctxt = ctxt; - args.inStr = inStr; - args.sourceOffset = sourceOffset; - args.count = count; - return PropagateUp(OnDataAvailableFun, &args); -} - -//////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/netwerk/base/src/nsLoadGroup.h b/mozilla/netwerk/base/src/nsLoadGroup.h index 651aa163c01..b723cf80307 100644 --- a/mozilla/netwerk/base/src/nsLoadGroup.h +++ b/mozilla/netwerk/base/src/nsLoadGroup.h @@ -25,7 +25,7 @@ class nsISupportsArray; -class nsLoadGroup : public nsILoadGroup, public nsIStreamListener +class nsLoadGroup : public nsILoadGroup { public: NS_DECL_AGGREGATED @@ -48,9 +48,6 @@ public: //////////////////////////////////////////////////////////////////////////// // nsILoadGroup methods: - /* void Init (in nsILoadGroup parent); */ - NS_IMETHOD Init(nsILoadGroup *parent); - /* attribute unsigned long DefaultLoadAttributes; */ NS_IMETHOD GetDefaultLoadAttributes(PRUint32 *aDefaultLoadAttributes); NS_IMETHOD SetDefaultLoadAttributes(PRUint32 aDefaultLoadAttributes); @@ -82,21 +79,6 @@ public: /* readonly attribute nsISimpleEnumerator SubGroups; */ NS_IMETHOD GetSubGroups(nsISimpleEnumerator * *aSubGroups); - //////////////////////////////////////////////////////////////////////////// - // nsIStreamObserver methods: - - NS_IMETHOD OnStartRequest(nsIChannel* channel, nsISupports *ctxt); - NS_IMETHOD OnStopRequest(nsIChannel* channel, nsISupports *ctxt, - nsresult status, const PRUnichar *errorMsg); - - //////////////////////////////////////////////////////////////////////////// - // nsIStreamListener methods: - - NS_IMETHOD OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, - nsIInputStream *inStr, - PRUint32 sourceOffset, - PRUint32 count); - //////////////////////////////////////////////////////////////////////////// // nsLoadGroup methods: @@ -106,11 +88,11 @@ public: static NS_METHOD Create(nsISupports *aOuter, REFNSIID aIID, void **aResult); + friend class nsLoadGroupEntry; + protected: typedef nsresult (*PropagateDownFun)(nsIRequest* request); nsresult PropagateDown(PropagateDownFun fun); - typedef nsresult (*PropagateUpFun)(nsIStreamObserver* obs, void* closure); - nsresult PropagateUp(PropagateUpFun fun, void* closure); protected: PRUint32 mDefaultLoadAttributes; diff --git a/mozilla/netwerk/util/public/nsIUnicharStreamLoader.h b/mozilla/netwerk/util/public/nsIUnicharStreamLoader.h index 239cea80c09..bd1808fc1df 100644 --- a/mozilla/netwerk/util/public/nsIUnicharStreamLoader.h +++ b/mozilla/netwerk/util/public/nsIUnicharStreamLoader.h @@ -31,6 +31,7 @@ class nsIUnicharStreamLoader; class nsIURI; +class nsILoadGroup; /** * Funtion registered with the stream loader. This function is called @@ -42,9 +43,9 @@ class nsIURI; * @param aStatus the completion status of the stream */ typedef void (*nsStreamCompleteFunc)(nsIUnicharStreamLoader* aLoader, - nsString& aData, - void* aRef, - nsresult aStatus); + nsString& aData, + void* aRef, + nsresult aStatus); /** * The purpose of this interface is to provide a mechanism for a @@ -75,7 +76,7 @@ public: * function */ extern nsresult NS_NewUnicharStreamLoader(nsIUnicharStreamLoader** aInstancePtrResult, - nsIURI* aURL, + nsIURI* aURL, nsILoadGroup* aLoadGroup, nsStreamCompleteFunc aFunc, void* aRef); diff --git a/mozilla/netwerk/util/public/nsNeckoUtil.h b/mozilla/netwerk/util/public/nsNeckoUtil.h index 838f0655f9b..f285d47260e 100644 --- a/mozilla/netwerk/util/public/nsNeckoUtil.h +++ b/mozilla/netwerk/util/public/nsNeckoUtil.h @@ -38,16 +38,14 @@ extern nsresult NS_NewURI(nsIURI* *result, const nsString& spec, nsIURI* baseURI = nsnull); extern nsresult -NS_OpenURI(nsIChannel* *result, nsIURI* uri, - nsILoadGroup* group = nsnull); +NS_OpenURI(nsIChannel* *result, nsIURI* uri, nsILoadGroup* group); extern nsresult -NS_OpenURI(nsIInputStream* *result, nsIURI* uri, - nsILoadGroup* group = nsnull); +NS_OpenURI(nsIInputStream* *result, nsIURI* uri, nsILoadGroup* group); extern nsresult -NS_OpenURI(nsIStreamListener* aConsumer, nsIURI* uri, - nsILoadGroup* group = nsnull); +NS_OpenURI(nsIStreamListener* aConsumer, nsISupports* context, + nsIURI* uri, nsILoadGroup* group); extern nsresult NS_MakeAbsoluteURI(const char* spec, nsIURI* baseURI, char* *result); diff --git a/mozilla/netwerk/util/src/nsNeckoUtil.cpp b/mozilla/netwerk/util/src/nsNeckoUtil.cpp index de53dc8c533..88ba2fbb230 100644 --- a/mozilla/netwerk/util/src/nsNeckoUtil.cpp +++ b/mozilla/netwerk/util/src/nsNeckoUtil.cpp @@ -50,8 +50,7 @@ NS_NewURI(nsIURI* *result, const nsString& spec, nsIURI* baseURI) } nsresult -NS_OpenURI(nsIChannel* *result, nsIURI* uri, - nsILoadGroup* group) +NS_OpenURI(nsIChannel* *result, nsIURI* uri, nsILoadGroup* group) { nsresult rv; NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); @@ -73,8 +72,7 @@ NS_OpenURI(nsIChannel* *result, nsIURI* uri, } nsresult -NS_OpenURI(nsIInputStream* *result, nsIURI* uri, - nsILoadGroup* group) +NS_OpenURI(nsIInputStream* *result, nsIURI* uri, nsILoadGroup* group) { nsresult rv; nsIChannel* channel; @@ -92,27 +90,16 @@ NS_OpenURI(nsIInputStream* *result, nsIURI* uri, } nsresult -NS_OpenURI(nsIStreamListener* aConsumer, nsIURI* uri, - nsILoadGroup* group) +NS_OpenURI(nsIStreamListener* aConsumer, nsISupports* context, + nsIURI* uri, nsILoadGroup* group) { nsresult rv; - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - nsIChannel* channel; - rv = serv->NewChannelFromURI("load", uri, nsnull, &channel); + + rv = NS_OpenURI(&channel, uri, group); if (NS_FAILED(rv)) return rv; - rv = channel->AsyncRead(0, -1, - channel, // channel as the context (the nsDocLoader expects this) - aConsumer); - if (NS_FAILED(rv)) goto done; - - if (group) { - rv = group->AddChannel(channel); - if (NS_FAILED(rv)) goto done; - } - done: + rv = channel->AsyncRead(0, -1, context, aConsumer); NS_RELEASE(channel); return rv; } diff --git a/mozilla/netwerk/util/src/nsNetStreamLoader.cpp b/mozilla/netwerk/util/src/nsNetStreamLoader.cpp index 3014c3ea1ee..f0a0a79c2f5 100644 --- a/mozilla/netwerk/util/src/nsNetStreamLoader.cpp +++ b/mozilla/netwerk/util/src/nsNetStreamLoader.cpp @@ -33,9 +33,9 @@ class nsUnicharStreamLoader : public nsIUnicharStreamLoader, public nsIStreamListener { public: - nsUnicharStreamLoader(nsIURI* aURL, + nsUnicharStreamLoader(nsIURI* aURL, nsILoadGroup* aLoadGroup, nsStreamCompleteFunc aFunc, - void* aRef); + void* aRef, nsresult *rv); virtual ~nsUnicharStreamLoader(); NS_DECL_ISUPPORTS @@ -62,9 +62,9 @@ protected: }; -nsUnicharStreamLoader::nsUnicharStreamLoader(nsIURI* aURL, +nsUnicharStreamLoader::nsUnicharStreamLoader(nsIURI* aURL, nsILoadGroup* aLoadGroup, nsStreamCompleteFunc aFunc, - void* aRef) + void* aRef, nsresult *rv) { NS_INIT_REFCNT(); mFunc = aFunc; @@ -72,13 +72,12 @@ nsUnicharStreamLoader::nsUnicharStreamLoader(nsIURI* aURL, mData = new nsString(); // XXX This is vile vile vile!!! - nsresult rv; if (aURL) { - rv = NS_OpenURI(this, aURL); - if ((NS_OK != rv) && (nsnull != mFunc)) { + *rv = NS_OpenURI(this, nsnull, aURL, aLoadGroup); + if ((NS_OK != *rv) && (nsnull != mFunc)) { // Thou shalt not call out of scope whilst ones refcnt is zero mRefCnt = 999; - (*mFunc)(this, *mData, mRef, rv); + (*mFunc)(this, *mData, mRef, *rv); mRefCnt = 0; } } @@ -187,6 +186,7 @@ nsUnicharStreamLoader::OnDataAvailable(nsIChannel* channel, nsISupports *ctxt, extern nsresult NS_NewUnicharStreamLoader(nsIUnicharStreamLoader** aInstancePtrResult, nsIURI* aURL, + nsILoadGroup* aLoadGroup, nsStreamCompleteFunc aFunc, void* aRef) { @@ -195,12 +195,14 @@ NS_NewUnicharStreamLoader(nsIUnicharStreamLoader** aInstancePtrResult, return NS_ERROR_NULL_POINTER; } - nsUnicharStreamLoader* it = new nsUnicharStreamLoader(aURL, - aFunc, - aRef); + nsresult rv; + nsUnicharStreamLoader* it = + new nsUnicharStreamLoader(aURL, aLoadGroup, aFunc, aRef, &rv); if (nsnull == it) { return NS_ERROR_OUT_OF_MEMORY; } + if (NS_FAILED(rv)) + return rv; return it->QueryInterface(kIUnicharStreamLoaderIID, (void **) aInstancePtrResult); } diff --git a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp index b11df3dd636..cf8ed189589 100644 --- a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp +++ b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp @@ -500,7 +500,7 @@ nsExpatTokenizer::OpenInputStream(nsString2& aURLStr, nsIInputStream*& in) ret = NS_NewURI(&uri, aURLStr); if (NS_FAILED(ret)) return ret; - ret = NS_OpenURI(&in, uri); + ret = NS_OpenURI(&in, uri, nsnull); // XXX need to pass the document's nsILoadGroup here! NS_RELEASE(uri); #endif // NECKO return ret; diff --git a/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp b/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp index 0240ab211d3..f06cb738edc 100644 --- a/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp +++ b/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp @@ -544,7 +544,7 @@ rdf_BlockingParse(nsIURI* aURL, nsIStreamListener* aConsumer) #ifdef NECKO nsCOMPtr channel; - rv = NS_OpenURI(getter_AddRefs(channel), aURL, nsnull /* XXX aConsumer */); + rv = NS_OpenURI(getter_AddRefs(channel), aURL, nsnull); // XXX need the nsILoadGroup here! if (NS_FAILED(rv)) { NS_ERROR("unable to open channel"); @@ -915,7 +915,7 @@ RDFXMLDataSourceImpl::Refresh(PRBool aBlocking) } else { #ifdef NECKO - rv = NS_OpenURI(lsnr, mURL); + rv = NS_OpenURI(lsnr, nsnull, mURL, nsnull); // XXX need the nsILoadGroup here! #else rv = NS_OpenURL(mURL, lsnr); #endif diff --git a/mozilla/rdf/datasource/src/nsFTPDataSource.cpp b/mozilla/rdf/datasource/src/nsFTPDataSource.cpp index 5cc0dc38f1e..e1340c1b4bd 100644 --- a/mozilla/rdf/datasource/src/nsFTPDataSource.cpp +++ b/mozilla/rdf/datasource/src/nsFTPDataSource.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8; c-file-style: "stroustrup" -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup" -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in @@ -835,7 +835,8 @@ FTPDataSource::GetFTPListing(nsIRDFResource *source, nsISimpleEnumerator** aResu FTPDataSourceCallback *callback = new FTPDataSourceCallback(mInner, source); if (nsnull != callback) { - rv = NS_OpenURI(NS_STATIC_CAST(nsIStreamListener *, callback), url); + rv = NS_OpenURI(NS_STATIC_CAST(nsIStreamListener *, callback), nsnull, + url, nsnull); // XXX need the nsILoadGroup here! } } #endif // NECKO diff --git a/mozilla/rdf/datasource/src/nsSearchDataSource.cpp b/mozilla/rdf/datasource/src/nsSearchDataSource.cpp index 28b6563520e..a33b81870bd 100755 --- a/mozilla/rdf/datasource/src/nsSearchDataSource.cpp +++ b/mozilla/rdf/datasource/src/nsSearchDataSource.cpp @@ -980,7 +980,8 @@ SearchDataSource::DoSearch(nsIRDFResource *source, nsIRDFResource *engine, nsStr if (nsnull != callback) { #ifdef NECKO - rv = NS_OpenURI(NS_STATIC_CAST(nsIStreamListener *, callback), url); + rv = NS_OpenURI(NS_STATIC_CAST(nsIStreamListener *, callback), nsnull, + url, nsnull); // XXX need the nsILoadGroup here! #else rv = NS_OpenURL(url, NS_STATIC_CAST(nsIStreamListener *, callback)); #endif diff --git a/mozilla/rdf/datasource/src/nsXULContentSink.cpp b/mozilla/rdf/datasource/src/nsXULContentSink.cpp index ab399112be3..95d3675ae3d 100644 --- a/mozilla/rdf/datasource/src/nsXULContentSink.cpp +++ b/mozilla/rdf/datasource/src/nsXULContentSink.cpp @@ -1460,12 +1460,17 @@ XULContentSinkImpl::OpenScript(const nsIParserNode& aNode) // onto it as opaque data. NS_ADDREF(this); + nsILoadGroup* loadGroup = mDocument->GetDocumentLoadGroup(); nsIUnicharStreamLoader* loader; rv = NS_NewUnicharStreamLoader(&loader, url, +#ifdef NECKO + loadGroup, +#endif (nsStreamCompleteFunc)DoneLoadingScript, (void *)this); NS_RELEASE(url); + NS_IF_RELEASE(loadGroup); if (NS_OK == rv) { rv = NS_ERROR_HTMLPARSER_BLOCK; } diff --git a/mozilla/uriloader/base/nsDocLoader.cpp b/mozilla/uriloader/base/nsDocLoader.cpp index 3c2def4c4a0..d0144860038 100644 --- a/mozilla/uriloader/base/nsDocLoader.cpp +++ b/mozilla/uriloader/base/nsDocLoader.cpp @@ -835,7 +835,7 @@ nsDocLoaderImpl::CreateURL(nsIURI** aInstancePtrResult, rv = NS_ERROR_NULL_POINTER; } else { #ifdef NECKO - rv = NS_NewURI(&url, aURLSpec, aBaseURL); // XXX GetLoadGroup() to NS_OpenURI + rv = NS_NewURI(&url, aURLSpec, aBaseURL); #else rv = NS_NewURL(&url, aURLSpec, aBaseURL, aContainer, this); #endif @@ -1582,7 +1582,11 @@ nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener) nsServiceManager::ReleaseService(kNetServiceCID, inet); } #else - rv = NS_OpenURI(this, m_Url); + nsILoadGroup* loadGroup = nsnull; + if (m_DocLoader) { + loadGroup = m_DocLoader->GetLoadGroup(); + } + rv = NS_OpenURI(this, nsnull, m_Url, loadGroup); #endif // NECKO return rv; diff --git a/mozilla/webshell/src/nsDocLoader.cpp b/mozilla/webshell/src/nsDocLoader.cpp index 3c2def4c4a0..d0144860038 100644 --- a/mozilla/webshell/src/nsDocLoader.cpp +++ b/mozilla/webshell/src/nsDocLoader.cpp @@ -835,7 +835,7 @@ nsDocLoaderImpl::CreateURL(nsIURI** aInstancePtrResult, rv = NS_ERROR_NULL_POINTER; } else { #ifdef NECKO - rv = NS_NewURI(&url, aURLSpec, aBaseURL); // XXX GetLoadGroup() to NS_OpenURI + rv = NS_NewURI(&url, aURLSpec, aBaseURL); #else rv = NS_NewURL(&url, aURLSpec, aBaseURL, aContainer, this); #endif @@ -1582,7 +1582,11 @@ nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener) nsServiceManager::ReleaseService(kNetServiceCID, inet); } #else - rv = NS_OpenURI(this, m_Url); + nsILoadGroup* loadGroup = nsnull; + if (m_DocLoader) { + loadGroup = m_DocLoader->GetLoadGroup(); + } + rv = NS_OpenURI(this, nsnull, m_Url, loadGroup); #endif // NECKO return rv; diff --git a/mozilla/xpcom/tests/CvtURL.cpp b/mozilla/xpcom/tests/CvtURL.cpp index 27f53537292..5fa96f16fef 100644 --- a/mozilla/xpcom/tests/CvtURL.cpp +++ b/mozilla/xpcom/tests/CvtURL.cpp @@ -65,7 +65,7 @@ int main(int argc, char** argv) #ifndef NECKO ec = NS_OpenURL(url, &in); #else - ec = NS_OpenURI(&in, url); + ec = NS_OpenURI(&in, url, nsnull); #endif // NECKO if (nsnull == in) { printf("open of url('%s') failed: error=%x\n", urlName, ec); diff --git a/mozilla/xpfe/components/related/src/nsRelatedLinksHandler.cpp b/mozilla/xpfe/components/related/src/nsRelatedLinksHandler.cpp index 7c47791bf48..913ae2fb1b6 100644 --- a/mozilla/xpfe/components/related/src/nsRelatedLinksHandler.cpp +++ b/mozilla/xpfe/components/related/src/nsRelatedLinksHandler.cpp @@ -853,7 +853,7 @@ RelatedLinksHandlerImpl::SetURL(char* aURL) if (NS_FAILED(rv)) return rv; #ifdef NECKO - rv = NS_OpenURI(listener, url); + rv = NS_OpenURI(listener, nsnull, url, nsnull); // XXX need the nsILoadGroup here! #else rv = NS_OpenURL(url, listener); #endif diff --git a/mozilla/xpfe/components/xfer/src/nsDownloadProgressDialog.cpp b/mozilla/xpfe/components/xfer/src/nsDownloadProgressDialog.cpp index e48d88d5f08..894d935fbcc 100644 --- a/mozilla/xpfe/components/xfer/src/nsDownloadProgressDialog.cpp +++ b/mozilla/xpfe/components/xfer/src/nsDownloadProgressDialog.cpp @@ -79,7 +79,7 @@ nsDownloadProgressDialog::OnStart() { __FILE__, (int)__LINE__, (int)rv ); } #else - nsresult rv = NS_OpenURI(this, mUrl); + nsresult rv = NS_OpenURI(this, nsnull, mUrl, nsnull); // XXX need the nsILoadGroup here! NS_ASSERTION(NS_SUCCEEDED(rv), "OnStart doesn't return rv!"); #endif // NECKO } diff --git a/mozilla/xpinstall/src/nsXPInstallManager.cpp b/mozilla/xpinstall/src/nsXPInstallManager.cpp index 33df2623629..3b9503e2833 100644 --- a/mozilla/xpinstall/src/nsXPInstallManager.cpp +++ b/mozilla/xpinstall/src/nsXPInstallManager.cpp @@ -214,7 +214,7 @@ nsresult nsXPInstallManager::DownloadNext() #endif if (NS_SUCCEEDED(rv)) { #ifdef NECKO - rv = NS_OpenURI( this, pURL ); + rv = NS_OpenURI( this, nsnull, pURL, nsnull ); // XXX need the nsILoadGroup here! #else rv = NS_OpenURL( pURL, this ); #endif