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