diff --git a/mozilla/netwerk/util/public/nsNeckoUtil.h b/mozilla/netwerk/util/public/nsNeckoUtil.h index 2ab6d29939c..66854891fba 100644 --- a/mozilla/netwerk/util/public/nsNeckoUtil.h +++ b/mozilla/netwerk/util/public/nsNeckoUtil.h @@ -23,6 +23,7 @@ #include "netCore.h" #include "nsIInputStream.h" #include "nsIStreamListener.h" +#include "nsILoadGroup.h" #include "nsIEventSinkGetter.h" #include "nsString.h" @@ -37,10 +38,12 @@ extern nsresult NS_NewURI(nsIURI* *result, const nsString& spec, nsIURI* baseURI = nsnull); extern nsresult -NS_OpenURI(nsIURI* uri, nsIInputStream* *result); +NS_OpenURI(nsIInputStream* *result, nsIURI* uri, + nsILoadGroup* group = nsnull); extern nsresult -NS_OpenURI(nsIURI* uri, nsIStreamListener* aConsumer); +NS_OpenURI(nsIStreamListener* aConsumer, nsIURI* uri, + nsILoadGroup* group = nsnull); 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 ad8ff637604..2b1446e48ba 100644 --- a/mozilla/netwerk/util/src/nsNeckoUtil.cpp +++ b/mozilla/netwerk/util/src/nsNeckoUtil.cpp @@ -44,7 +44,8 @@ NS_NewURI(nsIURI* *result, const nsString& spec, nsIURI* baseURI) } nsresult -NS_OpenURI(nsIURI* uri, nsIInputStream* *result) +NS_OpenURI(nsIInputStream* *result, nsIURI* uri, + nsILoadGroup* group) { nsresult rv; NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); @@ -56,15 +57,24 @@ NS_OpenURI(nsIURI* uri, nsIInputStream* *result) nsIInputStream* inStr; rv = channel->OpenInputStream(0, -1, &inStr); - NS_RELEASE(channel); - if (NS_FAILED(rv)) return rv; + if (NS_FAILED(rv)) goto done; + if (group) { + rv = group->AddChannel(channel); + if (NS_FAILED(rv)) { + NS_RELEASE(inStr); + goto done; + } + } *result = inStr; + done: + NS_RELEASE(channel); return rv; } nsresult -NS_OpenURI(nsIURI* uri, nsIStreamListener* aConsumer) +NS_OpenURI(nsIStreamListener* aConsumer, nsIURI* uri, + nsILoadGroup* group) { nsresult rv; NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); @@ -77,6 +87,13 @@ NS_OpenURI(nsIURI* uri, nsIStreamListener* aConsumer) rv = channel->AsyncRead(0, -1, uri, // uri used as context nsnull, // XXX need event queue of current thread aConsumer); + if (NS_FAILED(rv)) goto done; + + if (group) { + rv = group->AddChannel(channel); + if (NS_FAILED(rv)) goto done; + } + done: NS_RELEASE(channel); return rv; }