From c7d8a4a439f78882d0493c1538df6100050f68c0 Mon Sep 17 00:00:00 2001 From: "warren%netscape.com" Date: Sat, 4 Dec 1999 10:01:32 +0000 Subject: [PATCH] Added buffer size parameters to NewChannel. Allows for optimization of amount of image data consumed. Bug #20408 git-svn-id: svn://10.0.0.236/trunk@55285 18797224-902f-48f8-a5cc-f745e15eee43 --- .../chrome/src/nsChromeProtocolHandler.cpp | 3 ++ mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp | 5 ++- mozilla/extensions/wallet/src/wallet.cpp | 3 +- mozilla/gfx/src/nsImageNetContextSync.cpp | 3 +- mozilla/mailnews/base/src/nsMessenger.cpp | 2 + mozilla/mailnews/base/util/nsMsgProtocol.cpp | 4 +- mozilla/mailnews/compose/src/nsMsgCreate.cpp | 1 + mozilla/mailnews/compose/src/nsMsgQuote.cpp | 2 + .../mailnews/compose/src/nsSmtpService.cpp | 2 + mozilla/mailnews/compose/src/nsURLFetcher.cpp | 1 + .../compose/tests/geturl/nsURLFetcher.cpp | 1 + mozilla/mailnews/imap/src/nsImapProtocol.cpp | 2 +- mozilla/mailnews/imap/src/nsImapService.cpp | 4 +- .../mailnews/local/src/nsMailboxService.cpp | 2 + mozilla/mailnews/local/src/nsPop3Service.cpp | 2 + .../mailnews/mime/src/nsStreamConverter.cpp | 1 + mozilla/mailnews/news/src/nsNntpService.cpp | 2 + mozilla/modules/libjar/nsJARChannel.cpp | 14 ++++++- mozilla/modules/libjar/nsJARChannel.h | 8 +++- .../modules/libjar/nsJARProtocolHandler.cpp | 4 +- mozilla/netwerk/base/public/nsIChannel.idl | 4 +- .../base/public/nsIFileTransportService.idl | 12 ++++-- mozilla/netwerk/base/public/nsIIOService.idl | 16 ++++++-- .../base/public/nsIProtocolHandler.idl | 4 +- .../base/public/nsISocketTransportService.idl | 12 ++++-- .../base/public/nsIUnicharStreamLoader.idl | 4 +- mozilla/netwerk/base/public/nsNetUtil.h | 19 ++++++--- mozilla/netwerk/base/src/nsFileTransport.cpp | 30 +++++++------- mozilla/netwerk/base/src/nsFileTransport.h | 18 ++++++--- .../base/src/nsFileTransportService.cpp | 13 +++++-- mozilla/netwerk/base/src/nsIOService.cpp | 30 +++++++++++--- .../netwerk/base/src/nsInputStreamChannel.cpp | 12 ++++-- .../netwerk/base/src/nsInputStreamChannel.h | 2 + .../netwerk/base/src/nsSocketTransport.cpp | 18 +++++---- mozilla/netwerk/base/src/nsSocketTransport.h | 7 +++- .../base/src/nsSocketTransportService.cpp | 20 ++++++---- .../base/src/nsUnicharStreamLoader.cpp | 7 +++- .../protocol/about/public/nsIAboutModule.idl | 6 ++- .../protocol/about/src/nsAboutBlank.cpp | 5 ++- .../protocol/about/src/nsAboutBloat.cpp | 5 ++- .../about/src/nsAboutProtocolHandler.cpp | 5 ++- .../protocol/data/src/nsDataChannel.cpp | 6 ++- .../netwerk/protocol/data/src/nsDataChannel.h | 7 +++- .../protocol/data/src/nsDataHandler.cpp | 4 +- .../file/public/nsIFileProtocolHandler.idl | 8 +++- .../protocol/file/src/nsFileChannel.cpp | 39 ++++++++++++++----- .../netwerk/protocol/file/src/nsFileChannel.h | 8 +++- .../file/src/nsFileProtocolHandler.cpp | 20 +++++++--- .../netwerk/protocol/ftp/src/nsFTPChannel.cpp | 17 ++++++-- .../netwerk/protocol/ftp/src/nsFTPChannel.h | 4 ++ .../ftp/src/nsFtpConnectionThread.cpp | 18 +++++++-- .../protocol/ftp/src/nsFtpConnectionThread.h | 6 ++- .../protocol/ftp/src/nsFtpProtocolHandler.cpp | 4 +- .../protocol/http/src/nsHTTPChannel.cpp | 18 ++++++--- .../netwerk/protocol/http/src/nsHTTPChannel.h | 9 ++++- .../protocol/http/src/nsHTTPHandler.cpp | 32 ++++++++++----- .../netwerk/protocol/http/src/nsHTTPHandler.h | 6 +++ .../netwerk/protocol/jar/src/nsJARChannel.cpp | 14 ++++++- .../netwerk/protocol/jar/src/nsJARChannel.h | 8 +++- .../protocol/jar/src/nsJARProtocolHandler.cpp | 4 +- .../keyword/src/nsKeywordProtocolHandler.cpp | 5 ++- .../netwerk/protocol/res/src/nsResChannel.cpp | 11 +++++- .../netwerk/protocol/res/src/nsResChannel.h | 6 ++- .../protocol/res/src/nsResProtocolHandler.cpp | 4 +- .../src/nsResourceProtocolHandler.cpp | 5 ++- .../converters/nsFTPDirListingConv.cpp | 1 + .../converters/nsMultiMixedConv.cpp | 1 + .../streamconv/test/TestStreamConv.cpp | 1 + mozilla/netwerk/test/TestFileInput.cpp | 2 +- mozilla/netwerk/test/TestFileInput2.cpp | 18 ++++++++- mozilla/netwerk/test/TestFileTransport.cpp | 6 +-- mozilla/netwerk/test/TestProtocols.cpp | 1 + mozilla/netwerk/test/TestRes.cpp | 4 +- mozilla/netwerk/test/TestSocketIO.cpp | 2 +- mozilla/netwerk/test/TestSocketInput.cpp | 2 +- mozilla/netwerk/test/TestSocketTransport.cpp | 2 +- mozilla/profile/Acct/nsAccount.cpp | 4 +- .../chrome/src/nsChromeProtocolHandler.cpp | 3 ++ mozilla/uriloader/base/nsURILoader.cpp | 3 +- mozilla/xpcom/tests/PropertiesTest.cpp | 2 +- mozilla/xpfe/appshell/src/nsAbout.cpp | 5 ++- .../components/xfer/src/nsStreamXferOp.cpp | 3 +- 82 files changed, 485 insertions(+), 153 deletions(-) diff --git a/mozilla/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/chrome/src/nsChromeProtocolHandler.cpp index 33f6201eae8..7198f7a7e22 100644 --- a/mozilla/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/chrome/src/nsChromeProtocolHandler.cpp @@ -336,6 +336,8 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, nsIInterfaceRequestor* aNotificationCallbacks, nsLoadFlags aLoadAttributes, nsIURI* aOriginalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *aResult) { nsresult rv; @@ -378,6 +380,7 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, aNotificationCallbacks, aLoadAttributes, aOriginalURI ? aOriginalURI : aURI, + bufferSegmentSize, bufferMaxSize, getter_AddRefs(result)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp b/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp index 0ba9d0bac9d..d8391056623 100644 --- a/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp +++ b/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp @@ -196,6 +196,8 @@ nsJSProtocolHandler::NewChannel(const char* verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { NS_ENSURE_ARG_POINTER(uri); @@ -342,7 +344,8 @@ nsJSProtocolHandler::NewChannel(const char* verb, rv = NS_NewInputStreamChannel(uri, "text/html", length, in, aLoadGroup, notificationCallbacks, loadAttributes, - originalURI, &channel); + originalURI, bufferSegmentSize, + bufferMaxSize, &channel); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/extensions/wallet/src/wallet.cpp b/mozilla/extensions/wallet/src/wallet.cpp index 8423684ff9b..6d650d8ba64 100644 --- a/mozilla/extensions/wallet/src/wallet.cpp +++ b/mozilla/extensions/wallet/src/wallet.cpp @@ -237,7 +237,8 @@ NS_NewURItoFile(const char *in, nsFileSpec dirSpec, const char *out) // Async reading thru the calls of the event sink interface rv = serv->NewChannelFromURI("load", pURL, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, getter_AddRefs(pChannel)); + nsIChannel::LOAD_NORMAL, nsnull, 0, 0, + getter_AddRefs(pChannel)); if (NS_FAILED(rv)) { printf("ERROR: NewChannelFromURI failed for %s\n", in); return rv; diff --git a/mozilla/gfx/src/nsImageNetContextSync.cpp b/mozilla/gfx/src/nsImageNetContextSync.cpp index bdef09db106..34e92f8d876 100644 --- a/mozilla/gfx/src/nsImageNetContextSync.cpp +++ b/mozilla/gfx/src/nsImageNetContextSync.cpp @@ -197,7 +197,8 @@ ImageNetContextSyncImpl::GetURL(ilIURL* aURL, // XXX NECKO what verb? what event sink getter nsIChannel *channel = nsnull; rv = service->NewChannelFromURI("load", uri, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, &channel); + nsIChannel::LOAD_NORMAL, nsnull, 0, 0, + &channel); NS_RELEASE(uri); if (NS_FAILED(rv)) return -1; diff --git a/mozilla/mailnews/base/src/nsMessenger.cpp b/mozilla/mailnews/base/src/nsMessenger.cpp index 4132d4facb3..3275c9b9bc7 100644 --- a/mozilla/mailnews/base/src/nsMessenger.cpp +++ b/mozilla/mailnews/base/src/nsMessenger.cpp @@ -483,6 +483,7 @@ nsMessenger::OpenAttachment(const char * url, const char * displayName, nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(aListener->m_channel)); if (NS_FAILED(rv)) { @@ -616,6 +617,7 @@ nsMessenger::SaveAs(const char* url, PRBool asFile, nsIMsgIdentity* identity) nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(aListener->m_channel)); if (NS_FAILED(rv)) { diff --git a/mozilla/mailnews/base/util/nsMsgProtocol.cpp b/mozilla/mailnews/base/util/nsMsgProtocol.cpp index 8ba6c6f3816..469d86ceaf4 100644 --- a/mozilla/mailnews/base/util/nsMsgProtocol.cpp +++ b/mozilla/mailnews/base/util/nsMsgProtocol.cpp @@ -68,7 +68,8 @@ nsresult nsMsgProtocol::OpenNetworkSocket(nsIURI * aURL) // open a connection on aURL->GetPort(&port); aURL->GetHost(getter_Copies(hostName)); - rv = socketService->CreateTransport(hostName, port, nsnull, getter_AddRefs(m_channel)); + rv = socketService->CreateTransport(hostName, port, nsnull, 0, 0, + getter_AddRefs(m_channel)); if (NS_SUCCEEDED(rv) && m_channel) { m_socketIsOpen = PR_FALSE; @@ -102,6 +103,7 @@ nsresult nsMsgProtocol::OpenFileSocket(nsIURI * aURL, const nsFileSpec * aFileSp nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(m_channel)); PR_FREEIF(urlSpec); diff --git a/mozilla/mailnews/compose/src/nsMsgCreate.cpp b/mozilla/mailnews/compose/src/nsMsgCreate.cpp index f81ec90be10..0cfb9427fce 100644 --- a/mozilla/mailnews/compose/src/nsMsgCreate.cpp +++ b/mozilla/mailnews/compose/src/nsMsgCreate.cpp @@ -201,6 +201,7 @@ nsresult rv; nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(dummyChannel)); if (NS_FAILED(mimeParser->AsyncConvertData(nsnull, nsnull, nsnull, dummyChannel))) { diff --git a/mozilla/mailnews/compose/src/nsMsgQuote.cpp b/mozilla/mailnews/compose/src/nsMsgQuote.cpp index 9a3e39944ab..f8ca48fe834 100644 --- a/mozilla/mailnews/compose/src/nsMsgQuote.cpp +++ b/mozilla/mailnews/compose/src/nsMsgQuote.cpp @@ -193,6 +193,7 @@ nsMsgQuote::QuoteMessage(const PRUnichar *msgURI, PRBool quoteHeaders, nsIStream nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(mQuoteChannel)); if (NS_FAILED(rv)) return rv; @@ -219,6 +220,7 @@ nsMsgQuote::QuoteMessage(const PRUnichar *msgURI, PRBool quoteHeaders, nsIStream nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(aChannel)); if (NS_FAILED(rv)) return rv; nsCOMPtr aCtxt = do_QueryInterface(aURL); diff --git a/mozilla/mailnews/compose/src/nsSmtpService.cpp b/mozilla/mailnews/compose/src/nsSmtpService.cpp index 67fb1c6e1df..e4983474133 100644 --- a/mozilla/mailnews/compose/src/nsSmtpService.cpp +++ b/mozilla/mailnews/compose/src/nsSmtpService.cpp @@ -390,6 +390,8 @@ NS_IMETHODIMP nsSmtpService::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **_retval) { nsresult rv = NS_OK; diff --git a/mozilla/mailnews/compose/src/nsURLFetcher.cpp b/mozilla/mailnews/compose/src/nsURLFetcher.cpp index 22b50d4aebd..be4a06211f3 100644 --- a/mozilla/mailnews/compose/src/nsURLFetcher.cpp +++ b/mozilla/mailnews/compose/src/nsURLFetcher.cpp @@ -209,6 +209,7 @@ nsURLFetcher::FireURLRequest(nsIURI *aURL, nsOutputFileStream *fOut, nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp b/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp index 4fa6278e3c8..9a3a581b5ae 100644 --- a/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp +++ b/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp @@ -199,6 +199,7 @@ nsURLFetcher::FireURLRequest(nsIURI *aURL, nsOutputFileStream *fOut, nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/mailnews/imap/src/nsImapProtocol.cpp b/mozilla/mailnews/imap/src/nsImapProtocol.cpp index c3a9b89f9c1..269e61737d8 100644 --- a/mozilla/mailnews/imap/src/nsImapProtocol.cpp +++ b/mozilla/mailnews/imap/src/nsImapProtocol.cpp @@ -600,7 +600,7 @@ nsresult nsImapProtocol::SetupWithUrl(nsIURI * aURL, nsISupports* aConsumer) aURL->GetHost(getter_Copies(hostName)); ClearFlag(IMAP_CONNECTION_IS_OPEN); - rv = socketService->CreateTransport(hostName, port, nsnull, getter_AddRefs(m_channel)); + rv = socketService->CreateTransport(hostName, port, nsnull, 0, 0, getter_AddRefs(m_channel)); if (NS_SUCCEEDED(rv)) rv = m_channel->OpenOutputStream(0 /* start position */, getter_AddRefs(m_outputStream)); diff --git a/mozilla/mailnews/imap/src/nsImapService.cpp b/mozilla/mailnews/imap/src/nsImapService.cpp index 2c21b3da892..50aaf2ef09a 100644 --- a/mozilla/mailnews/imap/src/nsImapService.cpp +++ b/mozilla/mailnews/imap/src/nsImapService.cpp @@ -460,7 +460,7 @@ nsImapService::FetchMessage(nsIImapUrl * aImapUrl, mailnewsUrl->GetLoadGroup(getter_AddRefs(aLoadGroup)); rv = NewChannel(nsnull, url, aLoadGroup, nsnull, nsIChannel::LOAD_NORMAL, - nsnull, getter_AddRefs(aChannel)); + nsnull, 0, 0, getter_AddRefs(aChannel)); if (NS_FAILED(rv)) return rv; nsCOMPtr aCtxt = do_QueryInterface(url); @@ -2236,6 +2236,8 @@ NS_IMETHODIMP nsImapService::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **_retval) { // imap can't open and return a channel right away...the url needs to go in the imap url queue diff --git a/mozilla/mailnews/local/src/nsMailboxService.cpp b/mozilla/mailnews/local/src/nsMailboxService.cpp index e590555da41..58eee02d0bd 100644 --- a/mozilla/mailnews/local/src/nsMailboxService.cpp +++ b/mozilla/mailnews/local/src/nsMailboxService.cpp @@ -302,6 +302,8 @@ NS_IMETHODIMP nsMailboxService::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **_retval) { nsresult rv = NS_OK; diff --git a/mozilla/mailnews/local/src/nsPop3Service.cpp b/mozilla/mailnews/local/src/nsPop3Service.cpp index 46b973e67ad..39460067828 100644 --- a/mozilla/mailnews/local/src/nsPop3Service.cpp +++ b/mozilla/mailnews/local/src/nsPop3Service.cpp @@ -265,6 +265,8 @@ NS_IMETHODIMP nsPop3Service::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **_retval) { // mscott - right now, I don't like the idea of returning channels to the caller. They just want us diff --git a/mozilla/mailnews/mime/src/nsStreamConverter.cpp b/mozilla/mailnews/mime/src/nsStreamConverter.cpp index 5abfd195e89..9666bc85417 100644 --- a/mozilla/mailnews/mime/src/nsStreamConverter.cpp +++ b/mozilla/mailnews/mime/src/nsStreamConverter.cpp @@ -429,6 +429,7 @@ NS_IMETHODIMP nsStreamConverter::Init(nsIURI *aURI, nsIStreamListener * aOutList nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(mOutgoingChannel)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/mailnews/news/src/nsNntpService.cpp b/mozilla/mailnews/news/src/nsNntpService.cpp index f8dbfe4e5b8..4e8a175a554 100644 --- a/mozilla/mailnews/news/src/nsNntpService.cpp +++ b/mozilla/mailnews/news/src/nsNntpService.cpp @@ -945,6 +945,8 @@ NS_IMETHODIMP nsNntpService::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **_retval) { nsresult rv = NS_OK; diff --git a/mozilla/modules/libjar/nsJARChannel.cpp b/mozilla/modules/libjar/nsJARChannel.cpp index 136639c87d3..5fb94e122f5 100644 --- a/mozilla/modules/libjar/nsJARChannel.cpp +++ b/mozilla/modules/libjar/nsJARChannel.cpp @@ -58,6 +58,12 @@ public: nsCOMPtr jarCacheFile; rv = serv->NewChannelFromNativePath(mJarCacheFile.GetNativePathCString(), + mJARChannel->mLoadGroup, + mJARChannel->mCallbacks, + mJARChannel->mLoadAttributes, + nsnull, + mJARChannel->mBufferSegmentSize, + mJARChannel->mBufferMaxSize, getter_AddRefs(jarCacheFile)); if (NS_FAILED(rv)) return rv; @@ -137,7 +143,9 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler, nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI) + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv; mURI = do_QueryInterface(uri, &rv); @@ -146,6 +154,8 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler, if (mCommand == nsnull) return NS_ERROR_OUT_OF_MEMORY; mOriginalURI = originalURI; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; rv = SetLoadAttributes(loadAttributes); if (NS_FAILED(rv)) return rv; @@ -267,6 +277,7 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // on some other thread) nsCOMPtr jarCacheTransport; rv = fts->CreateTransport(jarCacheFile, mCommand, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(jarCacheTransport)); if (NS_FAILED(rv)) return rv; @@ -323,6 +334,7 @@ nsJARChannel::ExtractJARElement(nsIFileChannel* jarBaseFile) nsCOMPtr jarTransport; rv = fts->CreateTransportFromFileSystem(this, mCommand, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(jarTransport)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/modules/libjar/nsJARChannel.h b/mozilla/modules/libjar/nsJARChannel.h index 6a6f95c3148..436b0177e2c 100644 --- a/mozilla/modules/libjar/nsJARChannel.h +++ b/mozilla/modules/libjar/nsJARChannel.h @@ -73,11 +73,15 @@ public: nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI); + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult ExtractJARElement(nsIFileChannel* jarFileChannel); nsresult GetCacheFile(nsFileSpec& cacheFile); + friend class nsJARDownloadObserver; + protected: char* mCommand; nsCOMPtr mURI; @@ -98,6 +102,8 @@ protected: nsCOMPtr mJARBaseFile; char* mJAREntry; nsCOMPtr mJAR; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif // nsJARChannel_h__ diff --git a/mozilla/modules/libjar/nsJARProtocolHandler.cpp b/mozilla/modules/libjar/nsJARProtocolHandler.cpp index a15828e6759..2a47b9e6952 100644 --- a/mozilla/modules/libjar/nsJARProtocolHandler.cpp +++ b/mozilla/modules/libjar/nsJARProtocolHandler.cpp @@ -122,6 +122,8 @@ nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -131,7 +133,7 @@ nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, if (NS_FAILED(rv)) return rv; rv = channel->Init(this, verb, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI); + loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/base/public/nsIChannel.idl b/mozilla/netwerk/base/public/nsIChannel.idl index f8a0759a580..5b3c4aa5db7 100644 --- a/mozilla/netwerk/base/public/nsIChannel.idl +++ b/mozilla/netwerk/base/public/nsIChannel.idl @@ -180,7 +180,9 @@ interface nsIInputStreamChannel : nsIChannel in nsILoadGroup aLoadGroup, in nsIInterfaceRequestor notificationCallbacks, in nsLoadFlags loadAttributes, - in nsIURI originalURI); + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); }; %{C++ diff --git a/mozilla/netwerk/base/public/nsIFileTransportService.idl b/mozilla/netwerk/base/public/nsIFileTransportService.idl index 6c06ff8f077..dc785bcede6 100644 --- a/mozilla/netwerk/base/public/nsIFileTransportService.idl +++ b/mozilla/netwerk/base/public/nsIFileTransportService.idl @@ -36,17 +36,23 @@ native nsFileSpec(nsFileSpec&); interface nsIFileTransportService : nsISupports { [noscript] nsIChannel createTransport(in nsFileSpec spec, // XXX change to nsIFile later - in string command); + in string command, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); // This version can be used with an existing input stream to serve // as a data pump: nsIChannel createTransportFromStream(in nsIInputStream fromStream, in string contentType, in long contentLength, - in string command); + in string command, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); nsIChannel createTransportFromFileSystem(in nsIFileSystem fsObj, - in string command); + in string command, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); void dispatchRequest(in nsIRunnable runnable); void suspend(in nsIRunnable trans); diff --git a/mozilla/netwerk/base/public/nsIIOService.idl b/mozilla/netwerk/base/public/nsIIOService.idl index 35913251e78..4fc2fe0b79e 100644 --- a/mozilla/netwerk/base/public/nsIIOService.idl +++ b/mozilla/netwerk/base/public/nsIIOService.idl @@ -69,7 +69,9 @@ interface nsIIOService : nsISupports in nsILoadGroup aLoadGroup, in nsIInterfaceRequestor notificationCallbacks, in nsLoadFlags loadAttributes, - in nsIURI originalURI); + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); /** * Convenience routine that first creates a URI by calling NewURI, and @@ -81,7 +83,9 @@ interface nsIIOService : nsISupports in nsILoadGroup aLoadGroup, in nsIInterfaceRequestor notificationCallbacks, in nsLoadFlags loadAttributes, - in nsIURI originalURI); + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); /** * Get the application name string that will be used as part @@ -121,7 +125,13 @@ interface nsIIOService : nsISupports * This convenience routine first looks up the file protocol handler, and * then uses it to construct a file channel from a native path string. */ - nsIFileChannel newChannelFromNativePath(in string nativePath); + nsIFileChannel newChannelFromNativePath(in string nativePath, + in nsILoadGroup aLoadGroup, + in nsIInterfaceRequestor notificationCallbacks, + in nsLoadFlags loadAttributes, + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); /** * Utility for protocol implementors -- extracts the scheme from a URL diff --git a/mozilla/netwerk/base/public/nsIProtocolHandler.idl b/mozilla/netwerk/base/public/nsIProtocolHandler.idl index ee9d2afb2df..9f8e048a2ed 100644 --- a/mozilla/netwerk/base/public/nsIProtocolHandler.idl +++ b/mozilla/netwerk/base/public/nsIProtocolHandler.idl @@ -57,7 +57,9 @@ interface nsIProtocolHandler : nsISupports in nsILoadGroup aLoadGroup, in nsIInterfaceRequestor notificationCallbacks, in nsLoadFlags loadAttributes, - in nsIURI originalURI); + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); }; %{C++ diff --git a/mozilla/netwerk/base/public/nsISocketTransportService.idl b/mozilla/netwerk/base/public/nsISocketTransportService.idl index 94067f5ceaa..a040ab4c51e 100644 --- a/mozilla/netwerk/base/public/nsISocketTransportService.idl +++ b/mozilla/netwerk/base/public/nsISocketTransportService.idl @@ -38,11 +38,15 @@ interface nsISocketTransportService : nsISupports */ nsIChannel createTransport(in string host, in long port, - in string printHost); + in string printHost, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); nsIChannel createTransportOfType(in string socketType, - in string host, - in long port, - in string printHost); + in string host, + in long port, + in string printHost, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); /** * Returns true if the specified transport is good enough for diff --git a/mozilla/netwerk/base/public/nsIUnicharStreamLoader.idl b/mozilla/netwerk/base/public/nsIUnicharStreamLoader.idl index 21bc260e1eb..19e8e66677e 100644 --- a/mozilla/netwerk/base/public/nsIUnicharStreamLoader.idl +++ b/mozilla/netwerk/base/public/nsIUnicharStreamLoader.idl @@ -45,7 +45,9 @@ interface nsIUnicharStreamLoader : nsISupports in nsIUnicharStreamLoaderObserver completionObserver, in nsILoadGroup loadGroup, in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes); + in nsLoadFlags loadAttributes, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); /** * Gets the number of bytes read so far. diff --git a/mozilla/netwerk/base/public/nsNetUtil.h b/mozilla/netwerk/base/public/nsNetUtil.h index ac9de120830..a106f2cc633 100644 --- a/mozilla/netwerk/base/public/nsNetUtil.h +++ b/mozilla/netwerk/base/public/nsNetUtil.h @@ -68,7 +68,9 @@ NS_NewURI(nsIURI* *result, const nsString& spec, nsIURI* baseURI = nsnull) inline nsresult NS_OpenURI(nsIChannel* *result, nsIURI* uri, nsILoadGroup *aGroup, nsIInterfaceRequestor *capabilities = nsnull, - nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL) + nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL, + PRUint32 bufferSegmentSize = 0, + PRUint32 bufferMaxSize = 0) { nsresult rv; static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); @@ -77,7 +79,8 @@ NS_OpenURI(nsIChannel* *result, nsIURI* uri, nsILoadGroup *aGroup, nsIChannel* channel; rv = serv->NewChannelFromURI("load", uri, aGroup, capabilities, - loadAttributes, nsnull, &channel); + loadAttributes, nsnull, + bufferSegmentSize, bufferMaxSize, &channel); if (NS_FAILED(rv)) return rv; *result = channel; @@ -185,6 +188,8 @@ NS_NewInputStreamChannel(nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -196,7 +201,8 @@ NS_NewInputStreamChannel(nsIURI* uri, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; rv = channel->Init(uri, contentType, contentLength, inStr, group, - notificationCallbacks, loadAttributes, originalURI); + notificationCallbacks, loadAttributes, originalURI, + bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) return rv; *result = channel; @@ -229,7 +235,9 @@ NS_NewUnicharStreamLoader(nsIUnicharStreamLoader* *result, nsIUnicharStreamLoaderObserver* observer, nsILoadGroup* loadGroup = nsnull, nsIInterfaceRequestor* notificationCallbacks = nsnull, - nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL) + nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL, + PRUint32 bufferSegmentSize = 0, + PRUint32 bufferMaxSize = 0) { nsresult rv; nsCOMPtr loader; @@ -239,7 +247,8 @@ NS_NewUnicharStreamLoader(nsIUnicharStreamLoader* *result, NS_GET_IID(nsIUnicharStreamLoader), getter_AddRefs(loader)); if (NS_FAILED(rv)) return rv; - rv = loader->Init(uri, observer, loadGroup, notificationCallbacks, loadAttributes); + rv = loader->Init(uri, observer, loadGroup, notificationCallbacks, loadAttributes, + bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) return rv; *result = loader; NS_ADDREF(*result); diff --git a/mozilla/netwerk/base/src/nsFileTransport.cpp b/mozilla/netwerk/base/src/nsFileTransport.cpp index a09b9d82708..d795a7f5ca2 100644 --- a/mozilla/netwerk/base/src/nsFileTransport.cpp +++ b/mozilla/netwerk/base/src/nsFileTransport.cpp @@ -295,31 +295,33 @@ nsFileTransport::nsFileTransport() } nsresult -nsFileTransport::Init(nsFileSpec& spec, const char* command) +nsFileTransport::Init(nsFileSpec& spec, const char* command, + PRUint32 bufferSegmentSize, PRUint32 bufferMaxSize) { nsresult rv; mSpec = spec; nsCOMPtr fsObj; rv = nsLocalFileSystem::Create(spec, getter_AddRefs(fsObj)); if (NS_FAILED(rv)) return rv; - return Init(fsObj, command); + return Init(fsObj, command, bufferSegmentSize, bufferMaxSize); } nsresult nsFileTransport::Init(nsIInputStream* fromStream, const char* contentType, - PRInt32 contentLength, const char* command) + PRInt32 contentLength, const char* command, + PRUint32 bufferSegmentSize, PRUint32 bufferMaxSize) { nsresult rv; nsCOMPtr fsObj; rv = nsInputStreamFileSystem::Create(fromStream, contentType, contentLength, getter_AddRefs(fsObj)); if (NS_FAILED(rv)) return rv; - return Init(fsObj, command); + return Init(fsObj, command, bufferSegmentSize, bufferMaxSize); } nsresult -nsFileTransport::Init(nsIFileSystem* fsObj, - const char* command) +nsFileTransport::Init(nsIFileSystem* fsObj, const char* command, + PRUint32 bufferSegmentSize, PRUint32 bufferMaxSize) { nsresult rv = NS_OK; if (mMonitor == nsnull) { @@ -328,6 +330,10 @@ nsFileTransport::Init(nsIFileSystem* fsObj, return NS_ERROR_OUT_OF_MEMORY; } mFileObject = fsObj; + mBufferSegmentSize = bufferSegmentSize != 0 + ? bufferSegmentSize : NS_FILE_TRANSPORT_DEFAULT_SEGMENT_SIZE; + mBufferMaxSize = bufferMaxSize != 0 + ? bufferMaxSize : NS_FILE_TRANSPORT_DEFAULT_BUFFER_SIZE; return rv; } @@ -480,8 +486,7 @@ nsFileTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = NS_NewPipe(getter_AddRefs(mBufferInputStream), getter_AddRefs(mBufferOutputStream), this, // nsIPipeObserver - NS_FILE_TRANSPORT_SEGMENT_SIZE, - NS_FILE_TRANSPORT_BUFFER_SIZE); + mBufferSegmentSize, mBufferMaxSize); if (NS_FAILED(rv)) return rv; rv = mBufferOutputStream->SetNonBlocking(PR_TRUE); @@ -595,8 +600,7 @@ nsFileTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, rv = NS_NewPipe(getter_AddRefs(mBufferInputStream), getter_AddRefs(mBufferOutputStream), this, // nsIPipeObserver - NS_FILE_TRANSPORT_SEGMENT_SIZE, - NS_FILE_TRANSPORT_BUFFER_SIZE); + mBufferSegmentSize, mBufferMaxSize); if (NS_FAILED(rv)) return rv; rv = mBufferInputStream->SetNonBlocking(PR_TRUE); @@ -889,7 +893,7 @@ nsFileTransport::Process(void) // transfer mStatus = NS_OK; - mBuffer = new char[NS_FILE_TRANSPORT_SEGMENT_SIZE]; + mBuffer = new char[mBufferSegmentSize]; if (mBuffer == nsnull) { mStatus = NS_ERROR_OUT_OF_MEMORY; mState = END_WRITE; @@ -910,9 +914,9 @@ nsFileTransport::Process(void) } case WRITING: { - PRUint32 transferAmt = NS_FILE_TRANSPORT_SEGMENT_SIZE; + PRUint32 transferAmt = mBufferSegmentSize; if (mTransferAmount >= 0) - transferAmt = PR_MIN(NS_FILE_TRANSPORT_SEGMENT_SIZE, mTransferAmount); + transferAmt = PR_MIN(mBufferSegmentSize, (PRUint32)mTransferAmount); PRUint32 writeAmt; if (mBufferInputStream) { mStatus = mBufferInputStream->ReadSegments(nsWriteToFile, mSink, diff --git a/mozilla/netwerk/base/src/nsFileTransport.h b/mozilla/netwerk/base/src/nsFileTransport.h index 9e62f3956c8..58e28f89114 100644 --- a/mozilla/netwerk/base/src/nsFileTransport.h +++ b/mozilla/netwerk/base/src/nsFileTransport.h @@ -60,13 +60,19 @@ public: Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); nsresult Init(nsFileSpec& spec, - const char* command); + const char* command, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult Init(nsIInputStream* fromStream, const char* contentType, PRInt32 contentLength, - const char* command); + const char* command, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult Init(nsIFileSystem* fsObj, - const char* command); + const char* command, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); void Process(void); @@ -95,6 +101,8 @@ protected: nsFileSpec mSpec; // eliminate? nsCOMPtr mFileObject; char* mContentType; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; nsCOMPtr mOpenObserver; nsCOMPtr mOpenContext; @@ -123,7 +131,7 @@ protected: char* mBuffer; }; -#define NS_FILE_TRANSPORT_SEGMENT_SIZE (2*1024) -#define NS_FILE_TRANSPORT_BUFFER_SIZE (8*1024) +#define NS_FILE_TRANSPORT_DEFAULT_SEGMENT_SIZE (2*1024) +#define NS_FILE_TRANSPORT_DEFAULT_BUFFER_SIZE (8*1024) #endif // nsFileTransport_h__ diff --git a/mozilla/netwerk/base/src/nsFileTransportService.cpp b/mozilla/netwerk/base/src/nsFileTransportService.cpp index 5f8256c397e..f0c457530f7 100644 --- a/mozilla/netwerk/base/src/nsFileTransportService.cpp +++ b/mozilla/netwerk/base/src/nsFileTransportService.cpp @@ -83,6 +83,8 @@ nsFileTransportService::Create(nsISupports *aOuter, REFNSIID aIID, void **aResul NS_IMETHODIMP nsFileTransportService::CreateTransport(nsFileSpec& spec, const char* command, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel** result) { nsresult rv; @@ -90,7 +92,7 @@ nsFileTransportService::CreateTransport(nsFileSpec& spec, if (trans == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(trans); - rv = trans->Init(spec, command); + rv = trans->Init(spec, command, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(trans); return rv; @@ -104,6 +106,8 @@ nsFileTransportService::CreateTransportFromStream(nsIInputStream *fromStream, const char* contentType, PRInt32 contentLength, const char *command, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel** result) { nsresult rv; @@ -111,7 +115,8 @@ nsFileTransportService::CreateTransportFromStream(nsIInputStream *fromStream, if (trans == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(trans); - rv = trans->Init(fromStream, contentType, contentLength, command); + rv = trans->Init(fromStream, contentType, contentLength, command, + bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(trans); return rv; @@ -123,6 +128,8 @@ nsFileTransportService::CreateTransportFromStream(nsIInputStream *fromStream, NS_IMETHODIMP nsFileTransportService::CreateTransportFromFileSystem(nsIFileSystem *fsObj, const char *command, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -130,7 +137,7 @@ nsFileTransportService::CreateTransportFromFileSystem(nsIFileSystem *fsObj, if (trans == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(trans); - rv = trans->Init(fsObj, command); + rv = trans->Init(fsObj, command, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(trans); return rv; diff --git a/mozilla/netwerk/base/src/nsIOService.cpp b/mozilla/netwerk/base/src/nsIOService.cpp index d8bb7151062..b073974019e 100644 --- a/mozilla/netwerk/base/src/nsIOService.cpp +++ b/mozilla/netwerk/base/src/nsIOService.cpp @@ -231,6 +231,8 @@ nsIOService::NewChannelFromURI(const char* verb, nsIURI *aURI, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -244,7 +246,8 @@ nsIOService::NewChannelFromURI(const char* verb, nsIURI *aURI, if (NS_FAILED(rv)) return rv; rv = handler->NewChannel(verb, aURI, aGroup, notificationCallbacks, - loadAttributes, originalURI, result); + loadAttributes, originalURI, + bufferSegmentSize, bufferMaxSize, result); return rv; } @@ -255,6 +258,8 @@ nsIOService::NewChannel(const char* verb, const char *aSpec, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -264,7 +269,8 @@ nsIOService::NewChannel(const char* verb, const char *aSpec, if (NS_FAILED(rv)) return rv; rv = handler->NewChannel(verb, uri, aGroup, notificationCallbacks, - loadAttributes, originalURI, result); + loadAttributes, originalURI, + bufferSegmentSize, bufferMaxSize, result); return rv; } @@ -337,7 +343,14 @@ nsIOService::GetUserAgent(PRUnichar* *aUserAgent) //////////////////////////////////////////////////////////////////////////////// NS_IMETHODIMP -nsIOService::NewChannelFromNativePath(const char *nativePath, nsIFileChannel **result) +nsIOService::NewChannelFromNativePath(const char *nativePath, + nsILoadGroup* aLoadGroup, + nsIInterfaceRequestor* notificationCallbacks, + nsLoadFlags loadAttributes, + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, + nsIFileChannel **result) { nsresult rv; nsCOMPtr handler; @@ -348,11 +361,18 @@ nsIOService::NewChannelFromNativePath(const char *nativePath, nsIFileChannel **r if (NS_FAILED(rv)) return rv; nsCOMPtr channel; - rv = fileHandler->NewChannelFromNativePath(nativePath, getter_AddRefs(channel)); + rv = fileHandler->NewChannelFromNativePath(nativePath, + aLoadGroup, + notificationCallbacks, + loadAttributes, + originalURI, + bufferSegmentSize, + bufferMaxSize, + getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; *result = channel; - NS_ADDREF(*result); + NS_ADDREF(*result); return NS_OK; } diff --git a/mozilla/netwerk/base/src/nsInputStreamChannel.cpp b/mozilla/netwerk/base/src/nsInputStreamChannel.cpp index cdd7c33bd7d..738efcd105c 100644 --- a/mozilla/netwerk/base/src/nsInputStreamChannel.cpp +++ b/mozilla/netwerk/base/src/nsInputStreamChannel.cpp @@ -67,12 +67,16 @@ nsInputStreamChannel::Init(nsIURI* uri, nsILoadGroup *aGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI) + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv; mOriginalURI = originalURI ? originalURI : uri; mURI = uri; mContentLength = contentLength; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; rv = SetLoadAttributes(loadAttributes); if (NS_FAILED(rv)) return rv; @@ -171,7 +175,8 @@ nsInputStreamChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) if (NS_FAILED(rv)) return rv; rv = fts->CreateTransportFromStream(mInputStream, mContentType, mContentLength, - "load", getter_AddRefs(mFileTransport)); + "load", mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) return rv; return mFileTransport->AsyncOpen(observer, ctxt); @@ -227,7 +232,8 @@ nsInputStreamChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, if (NS_FAILED(rv)) return rv; rv = fts->CreateTransportFromStream(mInputStream, mContentType, mContentLength, - "load", getter_AddRefs(mFileTransport)); + "load", mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) return rv; } diff --git a/mozilla/netwerk/base/src/nsInputStreamChannel.h b/mozilla/netwerk/base/src/nsInputStreamChannel.h index cfcc2b10c12..6e46d6ccb3c 100644 --- a/mozilla/netwerk/base/src/nsInputStreamChannel.h +++ b/mozilla/netwerk/base/src/nsInputStreamChannel.h @@ -60,6 +60,8 @@ protected: nsCOMPtr mOwner; nsCOMPtr mFileTransport; nsCOMPtr mRealListener; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif // nsInputStreamChannel_h__ diff --git a/mozilla/netwerk/base/src/nsSocketTransport.cpp b/mozilla/netwerk/base/src/nsSocketTransport.cpp index 77670a03c53..baf145427b3 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport.cpp +++ b/mozilla/netwerk/base/src/nsSocketTransport.cpp @@ -230,10 +230,17 @@ nsresult nsSocketTransport::Init(nsSocketTransportService* aService, const char* aHost, PRInt32 aPort, const char* aSocketType, - const char* aPrintHost) + const char* aPrintHost, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv = NS_OK; + mBufferSegmentSize = bufferSegmentSize != 0 + ? bufferSegmentSize : NS_SOCKET_TRANSPORT_SEGMENT_SIZE; + mBufferMaxSize = bufferMaxSize != 0 + ? bufferMaxSize : NS_SOCKET_TRANSPORT_BUFFER_SIZE; + mService = aService; NS_ADDREF(mService); @@ -1568,8 +1575,7 @@ nsSocketTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, rv = NS_NewPipe(getter_AddRefs(mReadPipeIn), getter_AddRefs(mReadPipeOut), this, // nsIPipeObserver - NS_SOCKET_TRANSPORT_SEGMENT_SIZE, - NS_SOCKET_TRANSPORT_BUFFER_SIZE); + mBufferSegmentSize, mBufferMaxSize); if (NS_SUCCEEDED(rv)) { rv = mReadPipeIn->SetNonBlocking(PR_TRUE); } @@ -1683,8 +1689,7 @@ nsSocketTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = NS_NewPipe(getter_AddRefs(mReadPipeIn), getter_AddRefs(mReadPipeOut), this, // nsIPipeObserver - NS_SOCKET_TRANSPORT_SEGMENT_SIZE, - NS_SOCKET_TRANSPORT_BUFFER_SIZE); + mBufferSegmentSize, mBufferMaxSize); if (NS_SUCCEEDED(rv)) { rv = mReadPipeOut->SetNonBlocking(PR_TRUE); *result = mReadPipeIn; @@ -1742,8 +1747,7 @@ nsSocketTransport::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *re // XXXbe calling out of module with a lock held... rv = NS_NewPipe(getter_AddRefs(in), getter_AddRefs(out), this, // nsIPipeObserver - NS_SOCKET_TRANSPORT_SEGMENT_SIZE, - NS_SOCKET_TRANSPORT_BUFFER_SIZE); + mBufferSegmentSize, mBufferMaxSize); if (NS_SUCCEEDED(rv)) { rv = in->SetNonBlocking(PR_TRUE); } diff --git a/mozilla/netwerk/base/src/nsSocketTransport.h b/mozilla/netwerk/base/src/nsSocketTransport.h index 26e8b925de6..9d6c155ee07 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport.h +++ b/mozilla/netwerk/base/src/nsSocketTransport.h @@ -129,7 +129,9 @@ public: const char* aHost, PRInt32 aPort, const char* aSocketType, - const char* aPrintHost); // This host is used for status mesg + const char* aPrintHost, // This host is used for status mesg + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult Process(PRInt16 aSelectFlags); @@ -226,7 +228,8 @@ protected: nsCOMPtr mWriteObserver; nsCOMPtr mWritePipeIn; nsCOMPtr mWritePipeOut; - + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; diff --git a/mozilla/netwerk/base/src/nsSocketTransportService.cpp b/mozilla/netwerk/base/src/nsSocketTransportService.cpp index 4a3a0da5c80..f0b35dc6af0 100644 --- a/mozilla/netwerk/base/src/nsSocketTransportService.cpp +++ b/mozilla/netwerk/base/src/nsSocketTransportService.cpp @@ -525,18 +525,23 @@ nsSocketTransportService::Run(void) NS_IMETHODIMP nsSocketTransportService::CreateTransport(const char* aHost, PRInt32 aPort, - const char* aPrintHost, + const char* aPrintHost, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel** aResult) { - return CreateTransportOfType(nsnull, aHost, aPort, aPrintHost, aResult); + return CreateTransportOfType(nsnull, aHost, aPort, aPrintHost, + bufferSegmentSize, bufferMaxSize, aResult); } NS_IMETHODIMP nsSocketTransportService::CreateTransportOfType(const char* aSocketType, - const char* aHost, - PRInt32 aPort, - const char* aPrintHost, - nsIChannel** aResult) + const char* aHost, + PRInt32 aPort, + const char* aPrintHost, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, + nsIChannel** aResult) { nsresult rv = NS_OK; nsSocketTransport* transport = nsnull; @@ -550,7 +555,8 @@ nsSocketTransportService::CreateTransportOfType(const char* aSocketType, // Create and initialize a new connection object... NS_NEWXPCOM(transport, nsSocketTransport); if (transport) { - rv = transport->Init(this, aHost, aPort, aSocketType, aPrintHost); + rv = transport->Init(this, aHost, aPort, aSocketType, aPrintHost, + bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { delete transport; transport = nsnull; diff --git a/mozilla/netwerk/base/src/nsUnicharStreamLoader.cpp b/mozilla/netwerk/base/src/nsUnicharStreamLoader.cpp index c54fbbf652e..9efcb0430ee 100644 --- a/mozilla/netwerk/base/src/nsUnicharStreamLoader.cpp +++ b/mozilla/netwerk/base/src/nsUnicharStreamLoader.cpp @@ -44,7 +44,9 @@ nsUnicharStreamLoader::Init(nsIURI* aURL, nsIUnicharStreamLoaderObserver* observer, nsILoadGroup* aGroup, nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes) + nsLoadFlags loadAttributes, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv = NS_OK; mObserver = observer; @@ -59,7 +61,8 @@ nsUnicharStreamLoader::Init(nsIURI* aURL, nsIChannel* channel; rv = serv->NewChannelFromURI("load", aURL, aGroup, notificationCallbacks, - loadAttributes, nsnull, &channel); + loadAttributes, nsnull, + bufferSegmentSize, bufferMaxSize, &channel); if (NS_FAILED(rv)) return rv; rv = channel->AsyncRead(0, -1, nsnull, this); diff --git a/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl b/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl index 0da30438b13..647b901ac09 100644 --- a/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl +++ b/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl @@ -31,12 +31,14 @@ interface nsIEventQueue; [scriptable, uuid(692303c0-2f83-11d3-8cd0-0060b0fc14a3)] interface nsIAboutModule : nsISupports { - nsIChannel NewChannel(in string verb, + nsIChannel newChannel(in string verb, in nsIURI aURI, in nsILoadGroup aLoadGroup, in nsIInterfaceRequestor notificationCallbacks, in nsLoadFlags loadAttributes, - in nsIURI originalURI); + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); }; %{C++ diff --git a/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp b/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp index 3ba25353007..bcb3bf5390d 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp @@ -39,6 +39,8 @@ nsAboutBlank::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -55,7 +57,8 @@ nsAboutBlank::NewChannel(const char *verb, rv = NS_NewInputStreamChannel(aURI, "text/html", nsCRT::strlen(kBlankPage), in, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, &channel); + loadAttributes, originalURI, + bufferSegmentSize, bufferMaxSize, &channel); NS_RELEASE(in); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/protocol/about/src/nsAboutBloat.cpp b/mozilla/netwerk/protocol/about/src/nsAboutBloat.cpp index dabe93312d1..f533f0802ac 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutBloat.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutBloat.cpp @@ -49,6 +49,8 @@ nsAboutBloat::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -141,7 +143,8 @@ nsAboutBloat::NewChannel(const char *verb, nsIChannel* channel; rv = NS_NewInputStreamChannel(aURI, "text/plain", size, inStr, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, &channel); + loadAttributes, originalURI, + bufferSegmentSize, bufferMaxSize, &channel); if (NS_FAILED(rv)) return rv; *result = channel; diff --git a/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp b/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp index e409aa3de4a..d761e3a9917 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp @@ -124,6 +124,8 @@ nsAboutProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { // about:what you ask? @@ -149,7 +151,8 @@ nsAboutProtocolHandler::NewChannel(const char* verb, nsIURI* uri, if (NS_SUCCEEDED(rv)) { // The standard return case: return aboutMod->NewChannel(verb, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, result); + loadAttributes, originalURI, bufferSegmentSize, + bufferMaxSize, result); } // mumble... diff --git a/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp b/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp index e8edec6dd76..b73323e4999 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp +++ b/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp @@ -58,7 +58,9 @@ nsDataChannel::Init(const char* verb, nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI) + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { // we don't care about event sinks in data nsresult rv; @@ -75,6 +77,8 @@ nsDataChannel::Init(const char* verb, // Data urls contain all the data within the url string itself. mOriginalURI = originalURI ? originalURI : uri; mUrl = uri; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; rv = ParseData(); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/protocol/data/src/nsDataChannel.h b/mozilla/netwerk/protocol/data/src/nsDataChannel.h index 90548ca8a50..860d09965fa 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataChannel.h +++ b/mozilla/netwerk/protocol/data/src/nsDataChannel.h @@ -55,7 +55,9 @@ public: nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI); + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult ParseData(); protected: @@ -68,7 +70,8 @@ protected: nsCString mContentType; PRInt32 mContentLength; nsCOMPtr mOwner; - + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif /* nsFTPChannel_h___ */ diff --git a/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp b/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp index 08805ddaed4..6b583da8e31 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp +++ b/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp @@ -101,6 +101,8 @@ nsDataHandler::NewChannel(const char* verb, nsIURI* url, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -110,7 +112,7 @@ nsDataHandler::NewChannel(const char* verb, nsIURI* url, if (NS_FAILED(rv)) return rv; rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI); + loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/file/public/nsIFileProtocolHandler.idl b/mozilla/netwerk/protocol/file/public/nsIFileProtocolHandler.idl index b8d230e5bd1..92c9ea29395 100644 --- a/mozilla/netwerk/protocol/file/public/nsIFileProtocolHandler.idl +++ b/mozilla/netwerk/protocol/file/public/nsIFileProtocolHandler.idl @@ -27,5 +27,11 @@ interface nsIFileChannel; [scriptable, uuid(fa1941f2-3102-11d3-8cd0-0060b0fc14a3)] interface nsIFileProtocolHandler : nsIProtocolHandler { - nsIFileChannel NewChannelFromNativePath(in string nativePath); + nsIFileChannel NewChannelFromNativePath(in string nativePath, + in nsILoadGroup aLoadGroup, + in nsIInterfaceRequestor notificationCallbacks, + in nsLoadFlags loadAttributes, + in nsIURI originalURI, + in unsigned long bufferSegmentSize, + in unsigned long bufferMaxSize); }; diff --git a/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp b/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp index af39f9703fd..8c4b77088dd 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp +++ b/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp @@ -68,7 +68,9 @@ nsFileChannel::Init(nsIFileProtocolHandler* handler, nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI) + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv; @@ -76,6 +78,8 @@ nsFileChannel::Init(nsIFileProtocolHandler* handler, mOriginalURI = originalURI ? originalURI : uri; mURI = uri; mCommand = nsCRT::strdup(command); + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; if (mCommand == nsnull) return NS_ERROR_OUT_OF_MEMORY; @@ -222,7 +226,7 @@ nsFileChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransport(mSpec, mCommand, getter_AddRefs(mFileTransport)); + rv = fts->CreateTransport(mSpec, mCommand, 0, 0, getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) goto done; rv = mFileTransport->SetNotificationCallbacks(mCallbacks); @@ -248,7 +252,8 @@ nsFileChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **result NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransport(mSpec, mCommand, getter_AddRefs(mFileTransport)); + rv = fts->CreateTransport(mSpec, mCommand, mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) goto done; rv = mFileTransport->SetNotificationCallbacks(mCallbacks); @@ -304,7 +309,8 @@ nsFileChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransport(mSpec, mCommand, getter_AddRefs(mFileTransport)); + rv = fts->CreateTransport(mSpec, mCommand, mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) goto done; rv = mFileTransport->SetNotificationCallbacks(mCallbacks); @@ -333,7 +339,8 @@ nsFileChannel::AsyncWrite(nsIInputStream *fromStream, NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransport(mSpec, mCommand, getter_AddRefs(mFileTransport)); + rv = fts->CreateTransport(mSpec, mCommand, mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) goto done; rv = mFileTransport->SetNotificationCallbacks(mCallbacks); @@ -553,12 +560,15 @@ public: NS_INIT_REFCNT(); } - nsresult Init(nsIFileProtocolHandler* handler, nsFileSpec& spec) { + nsresult Init(nsFileChannel* parent, nsIFileProtocolHandler* handler, + nsFileSpec& spec) { const char* path = spec.GetNativePathCString(); mDir = PR_OpenDir(path); if (mDir == nsnull) // not a directory? return NS_ERROR_FAILURE; mHandler = handler; + mParent = parent; + NS_ADDREF(mParent); return NS_OK; } @@ -579,7 +589,14 @@ public: } const char* path = entry->name; - rv = mHandler->NewChannelFromNativePath(path, getter_AddRefs(mNext)); + rv = mHandler->NewChannelFromNativePath(path, + mParent->mLoadGroup, + mParent->mCallbacks, + mParent->mLoadAttributes, + nsnull, + mParent->mBufferSegmentSize, + mParent->mBufferMaxSize, + getter_AddRefs(mNext)); if (NS_FAILED(rv)) return rv; NS_ASSERTION(mNext, "NewChannel failed"); @@ -604,9 +621,11 @@ public: PRStatus status = PR_CloseDir(mDir); NS_ASSERTION(status == PR_SUCCESS, "close failed"); } + NS_RELEASE(mParent); } protected: + nsFileChannel* mParent; nsCOMPtr mHandler; PRDir* mDir; nsCOMPtr mNext; @@ -629,7 +648,7 @@ nsFileChannel::GetChildren(nsISimpleEnumerator * *aChildren) if (dirEnum == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(dirEnum); - rv = dirEnum->Init(mHandler, mSpec); + rv = dirEnum->Init(this, mHandler, mSpec); if (NS_FAILED(rv)) { NS_RELEASE(dirEnum); return rv; @@ -816,8 +835,10 @@ nsFileChannel::CreateFileChannelFromFileSpec(nsFileSpec& spec, nsIFileChannel ** nsnull, mLoadGroup, mCallbacks, - nsIChannel::LOAD_NORMAL, + mLoadAttributes, nsnull, + mBufferSegmentSize, + mBufferMaxSize, &channel); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/protocol/file/src/nsFileChannel.h b/mozilla/netwerk/protocol/file/src/nsFileChannel.h index 5084fdb1a27..e2dde94c903 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileChannel.h +++ b/mozilla/netwerk/protocol/file/src/nsFileChannel.h @@ -69,7 +69,11 @@ public: nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI); + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); + + friend class nsDirEnumerator; protected: nsresult CreateFileChannelFromFileSpec(nsFileSpec& spec, nsIFileChannel** result); @@ -86,6 +90,8 @@ protected: nsCOMPtr mLoadGroup; nsCOMPtr mOwner; nsCOMPtr mRealListener; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif // nsFileChannel_h__ diff --git a/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp b/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp index d6850a19aab..31866b53b03 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp @@ -132,6 +132,8 @@ nsFileProtocolHandler::NewChannel(const char* command, nsIURI* url, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -141,7 +143,7 @@ nsFileProtocolHandler::NewChannel(const char* command, nsIURI* url, if (NS_FAILED(rv)) return rv; rv = channel->Init(this, command, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI); + loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; @@ -153,6 +155,12 @@ nsFileProtocolHandler::NewChannel(const char* command, nsIURI* url, NS_IMETHODIMP nsFileProtocolHandler::NewChannelFromNativePath(const char* nativePath, + nsILoadGroup* aLoadGroup, + nsIInterfaceRequestor* notificationCallbacks, + nsLoadFlags loadAttributes, + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIFileChannel* *result) { nsresult rv; @@ -166,10 +174,12 @@ nsFileProtocolHandler::NewChannelFromNativePath(const char* nativePath, rv = NewChannel("load", // XXX what should this be? uri, - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI same as uri + aLoadGroup, + notificationCallbacks, + loadAttributes, + originalURI, + bufferSegmentSize, + bufferMaxSize, (nsIChannel**)result); NS_RELEASE(uri); return rv; diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp index 79b86d928e9..97be520ff9b 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp @@ -77,6 +77,8 @@ nsFTPChannel::Init(const char* verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIProtocolHandler* aHandler, nsIThreadPool* aPool) { @@ -105,6 +107,9 @@ nsFTPChannel::Init(const char* verb, rv = SetNotificationCallbacks(notificationCallbacks); if (NS_FAILED(rv)) return rv; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; + return rv; } @@ -200,7 +205,8 @@ nsFTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, // when data become available to it. nsCOMPtr bufOutStream; nsCOMPtr bufInStream; - rv = NS_NewPipe(getter_AddRefs(bufInStream), getter_AddRefs(bufOutStream)); + rv = NS_NewPipe(getter_AddRefs(bufInStream), getter_AddRefs(bufOutStream), + nsnull, mBufferSegmentSize, mBufferMaxSize); if (NS_FAILED(rv)) return rv; *_retval = NS_STATIC_CAST(nsIInputStream*, bufInStream.get()); @@ -218,7 +224,8 @@ nsFTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, NS_ADDREF(mConnThread); // keep our own ref to the thread obj (we'll // release it later in this same call. - rv = mConnThread->Init(mHandler, this, nsnull); + rv = mConnThread->Init(mHandler, this, nsnull, + mBufferSegmentSize, mBufferMaxSize); mHandler = 0; if (NS_FAILED(rv)) { NS_RELEASE(mConnThread); @@ -270,7 +277,8 @@ nsFTPChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) mThreadRequest = do_QueryInterface((nsISupports*)(nsIRequest*)mConnThread); - rv = mConnThread->Init(mHandler, this, ctxt); + rv = mConnThread->Init(mHandler, this, ctxt, + mBufferSegmentSize, mBufferMaxSize); mHandler = 0; if (NS_FAILED(rv)) { NS_RELEASE(mConnThread); @@ -335,7 +343,8 @@ nsFTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, mThreadRequest = do_QueryInterface((nsISupports*)(nsIRequest*)mConnThread); - rv = mConnThread->Init(mHandler, this, ctxt); + rv = mConnThread->Init(mHandler, this, ctxt, + mBufferSegmentSize, mBufferMaxSize); mHandler = 0; if (NS_FAILED(rv)) { NS_RELEASE(mConnThread); diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h index 78b7526fedf..4de453ca4e8 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h @@ -71,6 +71,8 @@ public: nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIProtocolHandler* aHandler, nsIThreadPool* aPool); @@ -96,6 +98,8 @@ protected: nsCOMPtr mHandler; nsCOMPtr mPool; // the thread pool we want to use to fire off connections. nsFtpConnectionThread *mConnThread; // the raw pointer to the thread object. + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif /* nsFTPChannel_h___ */ diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp index c6124c083c7..e02c91f278a 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp @@ -1470,7 +1470,8 @@ nsFtpConnectionThread::R_retr() { mSentStart = PR_TRUE; } - rv = NS_NewPipe(getter_AddRefs(mBufInStream), getter_AddRefs(mBufOutStream)); + rv = NS_NewPipe(getter_AddRefs(mBufInStream), getter_AddRefs(mBufOutStream), + nsnull, mBufferSegmentSize, mBufferMaxSize); if (NS_FAILED(rv)) return FTP_ERROR; return FTP_READ_DATA_BUF; @@ -1563,7 +1564,9 @@ nsFtpConnectionThread::R_pasv() { nsAllocator::Free(response); // now we know where to connect our data channel - rv = mSTS->CreateTransport(host.GetBuffer(), port, nsnull, getter_AddRefs(mDPipe)); // the data channel + rv = mSTS->CreateTransport(host.GetBuffer(), port, nsnull, + mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mDPipe)); // the data channel if (NS_FAILED(rv)) return FTP_ERROR; // hook ourself up as a proxy for progress notifications @@ -1750,7 +1753,9 @@ nsFtpConnectionThread::Run() { if (NS_FAILED(rv)) return rv; // build our own - rv = mSTS->CreateTransport(host, mPort, host, getter_AddRefs(mCPipe)); // the command channel + rv = mSTS->CreateTransport(host, mPort, host, + mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs(mCPipe)); // the command channel if (NS_FAILED(rv)) return rv; // get the output stream so we can write to the server @@ -1925,9 +1930,14 @@ nsFtpConnectionThread::Resume(void) nsresult nsFtpConnectionThread::Init(nsIProtocolHandler* aHandler, nsIChannel* aChannel, - nsISupports* aContext) { + nsISupports* aContext, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; + // parameter validation NS_ASSERTION(aChannel, "FTP: thread needs a channel"); diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h index 5e7ea4e1fec..2ed42442742 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h @@ -131,7 +131,9 @@ public: nsresult Init(nsIProtocolHandler *aHandler, nsIChannel *aChannel, - nsISupports *aContext); + nsISupports *aContext, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult Process(); @@ -267,6 +269,8 @@ private: nsCOMPtr mObserver; nsCOMPtr mObserverContext; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #define NS_FTP_BUFFER_READ_SIZE (8*1024) diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp b/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp index 1baae914fcc..b50e5d55548 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp @@ -159,6 +159,8 @@ nsFtpProtocolHandler::NewChannel(const char* verb, nsIURI* url, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -168,7 +170,7 @@ nsFtpProtocolHandler::NewChannel(const char* verb, nsIURI* url, if (NS_FAILED(rv)) return rv; rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, loadAttributes, - originalURI, this, mPool); + originalURI, bufferSegmentSize, bufferMaxSize, this, mPool); if (NS_FAILED(rv)) { NS_RELEASE(channel); PR_LOG(gFTPLog, PR_LOG_DEBUG, ("nsFtpProtocolHandler::NewChannel() FAILED\n")); diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp index 65f575e396f..cea35e38aa5 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp @@ -71,7 +71,9 @@ static NS_DEFINE_IID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); nsHTTPChannel::nsHTTPChannel(nsIURI* i_URL, const char *i_Verb, nsIURI* originalURI, - nsHTTPHandler* i_Handler): + nsHTTPHandler* i_Handler, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize): mAuthTriedWithPrehost(PR_FALSE), mConnected(PR_FALSE), mHandler(dont_QueryInterface(i_Handler)), @@ -83,7 +85,9 @@ nsHTTPChannel::nsHTTPChannel(nsIURI* i_URL, mState(HS_IDLE), mURI(dont_QueryInterface(i_URL)), mUsingProxy(PR_FALSE), - mRawResponseListener(nsnull) + mRawResponseListener(nsnull), + mBufferSegmentSize(bufferSegmentSize), + mBufferMaxSize(bufferMaxSize) { NS_INIT_REFCNT(); @@ -640,8 +644,8 @@ nsHTTPChannel::Open(void) } } - rv = mHandler->RequestTransport(mURI, - this, + rv = mHandler->RequestTransport(mURI, this, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(transport)); if (NS_ERROR_BUSY == rv) { @@ -765,7 +769,8 @@ nsresult nsHTTPChannel::Redirect(const char *aNewLocation, #endif /* PR_LOGGING */ rv = serv->NewChannelFromURI(mVerb.GetBuffer(), newURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, getter_AddRefs(channel)); + mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; // Start the redirect... @@ -1007,7 +1012,8 @@ nsHTTPChannel::Authenticate(const char *iChallenge, // This smells like a clone function... maybe there is a // benefit in doing that, think. TODO. rv = serv->NewChannelFromURI(mVerb.GetBuffer(), mURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, getter_AddRefs(channel)); + mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; nsCOMPtr httpChannel = do_QueryInterface(channel); diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h index 21733de88e9..ed3e1ee49b9 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h +++ b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h @@ -64,7 +64,9 @@ public: nsHTTPChannel(nsIURI* i_URL, const char* verb, nsIURI* originalURI, - nsHTTPHandler* i_Handler); + nsHTTPHandler* i_Handler, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); virtual ~nsHTTPChannel(); @@ -77,7 +79,7 @@ public: // nsHTTPChannel methods: nsresult Authenticate(const char *iChallenge, - nsIChannel **oChannel); + nsIChannel **oChannel); nsresult Init(nsILoadGroup *aGroup); nsresult Open(); nsresult Redirect(const char *aURL, @@ -129,6 +131,9 @@ protected: */ PRBool mAuthTriedWithPrehost; PRBool mUsingProxy; + + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif /* _nsHTTPChannel_h_ */ diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp b/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp index a5303a0d2f8..ad603deb097 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp @@ -191,6 +191,8 @@ nsHTTPHandler::NewChannel(const char* verb, nsIURI* i_URL, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **o_Instance) { nsresult rv; @@ -235,7 +237,9 @@ nsHTTPHandler::NewChannel(const char* verb, nsIURI* i_URL, pChannel = new nsHTTPChannel(i_URL, verb, originalURI, - this); + this, + bufferSegmentSize, + bufferMaxSize); if (pChannel) { NS_ADDREF(pChannel); rv = pChannel->SetLoadAttributes(loadAttributes); @@ -354,8 +358,10 @@ nsHTTPHandler::NewPostDataStream(PRBool isFile, nsresult nsHTTPHandler::RequestTransport(nsIURI* i_Uri, - nsHTTPChannel* i_Channel, - nsIChannel** o_pTrans) + nsHTTPChannel* i_Channel, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, + nsIChannel** o_pTrans) { nsresult rv; PRUint32 count; @@ -448,11 +454,13 @@ nsresult nsHTTPHandler::RequestTransport(nsIURI* i_Uri, // Create a new one... if (!mProxy || !mUseProxy) { - rv = CreateTransport(host, port, host, &trans); + rv = CreateTransport(host, port, host, + bufferSegmentSize, bufferMaxSize, &trans); } else { - rv = CreateTransport(mProxy, mProxyPort, host, &trans); + rv = CreateTransport(mProxy, mProxyPort, host, + bufferSegmentSize, bufferMaxSize, &trans); } if (NS_FAILED(rv)) return rv; } @@ -474,17 +482,21 @@ nsresult nsHTTPHandler::RequestTransport(nsIURI* i_Uri, } nsresult nsHTTPHandler::CreateTransport(const char* host, - PRInt32 port, - const char* aPrintHost, - nsIChannel** o_pTrans) + PRInt32 port, + const char* aPrintHost, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, + nsIChannel** o_pTrans) { nsresult rv; NS_WITH_SERVICE(nsISocketTransportService, sts, - kSocketTransportServiceCID, &rv); + kSocketTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - return sts->CreateTransport(host, port, aPrintHost, o_pTrans); + return sts->CreateTransport(host, port, aPrintHost, + bufferSegmentSize, bufferMaxSize, + o_pTrans); } nsHTTPHandler * nsHTTPHandler::GetInstance(void) diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPHandler.h b/mozilla/netwerk/protocol/http/src/nsHTTPHandler.h index 6fe917f7955..91b012b1134 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPHandler.h +++ b/mozilla/netwerk/protocol/http/src/nsHTTPHandler.h @@ -87,6 +87,8 @@ public: nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **_retval); NS_IMETHOD NewURI(const char *aSpec, nsIURI *aBaseURI, @@ -132,6 +134,8 @@ public: */ virtual nsresult RequestTransport(nsIURI *i_Uri, nsHTTPChannel* i_Channel, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel** o_pTrans); /** @@ -141,6 +145,8 @@ public: virtual nsresult CreateTransport(const char* host, PRInt32 port, const char* aPrintHost, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel** o_pTrans); /* diff --git a/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp b/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp index 136639c87d3..5fb94e122f5 100644 --- a/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp +++ b/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp @@ -58,6 +58,12 @@ public: nsCOMPtr jarCacheFile; rv = serv->NewChannelFromNativePath(mJarCacheFile.GetNativePathCString(), + mJARChannel->mLoadGroup, + mJARChannel->mCallbacks, + mJARChannel->mLoadAttributes, + nsnull, + mJARChannel->mBufferSegmentSize, + mJARChannel->mBufferMaxSize, getter_AddRefs(jarCacheFile)); if (NS_FAILED(rv)) return rv; @@ -137,7 +143,9 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler, nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI) + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv; mURI = do_QueryInterface(uri, &rv); @@ -146,6 +154,8 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler, if (mCommand == nsnull) return NS_ERROR_OUT_OF_MEMORY; mOriginalURI = originalURI; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; rv = SetLoadAttributes(loadAttributes); if (NS_FAILED(rv)) return rv; @@ -267,6 +277,7 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // on some other thread) nsCOMPtr jarCacheTransport; rv = fts->CreateTransport(jarCacheFile, mCommand, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(jarCacheTransport)); if (NS_FAILED(rv)) return rv; @@ -323,6 +334,7 @@ nsJARChannel::ExtractJARElement(nsIFileChannel* jarBaseFile) nsCOMPtr jarTransport; rv = fts->CreateTransportFromFileSystem(this, mCommand, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(jarTransport)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/protocol/jar/src/nsJARChannel.h b/mozilla/netwerk/protocol/jar/src/nsJARChannel.h index 6a6f95c3148..436b0177e2c 100644 --- a/mozilla/netwerk/protocol/jar/src/nsJARChannel.h +++ b/mozilla/netwerk/protocol/jar/src/nsJARChannel.h @@ -73,11 +73,15 @@ public: nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI); + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); nsresult ExtractJARElement(nsIFileChannel* jarFileChannel); nsresult GetCacheFile(nsFileSpec& cacheFile); + friend class nsJARDownloadObserver; + protected: char* mCommand; nsCOMPtr mURI; @@ -98,6 +102,8 @@ protected: nsCOMPtr mJARBaseFile; char* mJAREntry; nsCOMPtr mJAR; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif // nsJARChannel_h__ diff --git a/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp b/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp index a15828e6759..2a47b9e6952 100644 --- a/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp @@ -122,6 +122,8 @@ nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -131,7 +133,7 @@ nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, if (NS_FAILED(rv)) return rv; rv = channel->Init(this, verb, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI); + loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/keyword/src/nsKeywordProtocolHandler.cpp b/mozilla/netwerk/protocol/keyword/src/nsKeywordProtocolHandler.cpp index 7a02a23c812..da6c9146349 100644 --- a/mozilla/netwerk/protocol/keyword/src/nsKeywordProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/keyword/src/nsKeywordProtocolHandler.cpp @@ -157,6 +157,8 @@ nsKeywordProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* aOriginalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -175,7 +177,8 @@ nsKeywordProtocolHandler::NewChannel(const char* verb, nsIURI* uri, // now we have an HTTP url, give the user an HTTP channel rv = serv->NewChannel(verb, httpSpec, nsnull, aLoadGroup, notificationCallbacks, - loadAttributes, aOriginalURI, result); + loadAttributes, aOriginalURI, + bufferSegmentSize, bufferMaxSize, result); nsAllocator::Free(httpSpec); return rv; diff --git a/mozilla/netwerk/protocol/res/src/nsResChannel.cpp b/mozilla/netwerk/protocol/res/src/nsResChannel.cpp index acf71999ba8..a0f814595cd 100644 --- a/mozilla/netwerk/protocol/res/src/nsResChannel.cpp +++ b/mozilla/netwerk/protocol/res/src/nsResChannel.cpp @@ -52,7 +52,9 @@ nsResChannel::Init(nsIResProtocolHandler* handler, nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI) + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize) { nsresult rv; @@ -60,6 +62,8 @@ nsResChannel::Init(nsIResProtocolHandler* handler, if (mLock == nsnull) return NS_ERROR_OUT_OF_MEMORY; + mBufferSegmentSize = bufferSegmentSize; + mBufferMaxSize = bufferMaxSize; mResolvedURI = uri; mHandler = handler; mOriginalURI = originalURI ? originalURI : uri; @@ -253,6 +257,7 @@ nsResChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mResolvedChannel)); if (NS_FAILED(rv)) continue; @@ -284,6 +289,7 @@ nsResChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **result) rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mResolvedChannel)); if (NS_FAILED(rv)) continue; @@ -330,6 +336,7 @@ nsResChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mResolvedChannel)); if (NS_FAILED(rv)) continue; @@ -390,6 +397,7 @@ nsResChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mResolvedChannel)); if (NS_FAILED(rv)) continue; @@ -452,6 +460,7 @@ nsResChannel::AsyncWrite(nsIInputStream *fromStream, rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, mLoadAttributes, mOriginalURI, + mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mResolvedChannel)); if (NS_FAILED(rv)) continue; diff --git a/mozilla/netwerk/protocol/res/src/nsResChannel.h b/mozilla/netwerk/protocol/res/src/nsResChannel.h index bdd59f57357..76da3344bd5 100644 --- a/mozilla/netwerk/protocol/res/src/nsResChannel.h +++ b/mozilla/netwerk/protocol/res/src/nsResChannel.h @@ -57,7 +57,9 @@ public: nsILoadGroup* aLoadGroup, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, - nsIURI* originalURI); + nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize); protected: class Substitutions { @@ -117,6 +119,8 @@ protected: nsCOMPtr mFromStream; PRUint32 mStartPosition; PRInt32 mCount; + PRUint32 mBufferSegmentSize; + PRUint32 mBufferMaxSize; }; #endif // nsResChannel_h__ diff --git a/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp b/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp index 60030bd0800..6d0692062b6 100644 --- a/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp @@ -176,6 +176,8 @@ nsResProtocolHandler::NewChannel(const char* command, nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -185,7 +187,7 @@ nsResProtocolHandler::NewChannel(const char* command, nsIURI* uri, if (NS_FAILED(rv)) return rv; rv = channel->Init(this, command, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI); + loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/resource/src/nsResourceProtocolHandler.cpp b/mozilla/netwerk/protocol/resource/src/nsResourceProtocolHandler.cpp index c694008b637..0dafe63edab 100644 --- a/mozilla/netwerk/protocol/resource/src/nsResourceProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/resource/src/nsResourceProtocolHandler.cpp @@ -287,6 +287,8 @@ nsResourceProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *result) { nsresult rv; @@ -310,7 +312,8 @@ nsResourceProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsIChannel* channel; rv = serv->NewChannel(verb, filePath, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI ? originalURI : uri, &channel); + loadAttributes, originalURI ? originalURI : uri, + bufferSegmentSize, bufferMaxSize, &channel); nsCRT::free(filePath); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp b/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp index da8579ba758..c269a5631f8 100644 --- a/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp +++ b/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp @@ -238,6 +238,7 @@ nsFTPDirListingConv::AsyncConvertData(const PRUnichar *aFromType, const PRUnicha nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, &mPartChannel); NS_RELEASE(uri); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp index 888d69c8c01..49f61bacedb 100644 --- a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp +++ b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp @@ -258,6 +258,7 @@ nsMultiMixedConv::OnDataAvailable(nsIChannel *channel, nsISupports *context, nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(mPartChannel)); if (NS_FAILED(rv)) { nsAllocator::Free(buffer); diff --git a/mozilla/netwerk/streamconv/test/TestStreamConv.cpp b/mozilla/netwerk/streamconv/test/TestStreamConv.cpp index a11e3c66071..ac0c17d66a4 100644 --- a/mozilla/netwerk/streamconv/test/TestStreamConv.cpp +++ b/mozilla/netwerk/streamconv/test/TestStreamConv.cpp @@ -284,6 +284,7 @@ main(int argc, char* argv[]) nsnull, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(dummyChannel)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/test/TestFileInput.cpp b/mozilla/netwerk/test/TestFileInput.cpp index 98fce36b737..89ef37410f3 100644 --- a/mozilla/netwerk/test/TestFileInput.cpp +++ b/mozilla/netwerk/test/TestFileInput.cpp @@ -369,7 +369,7 @@ ParallelReadTest(char* dirName, nsIFileTransportService* fts) NS_ASSERTION(listener, "QI failed"); nsIChannel* trans; - rv = fts->CreateTransport(spec, "load", &trans); + rv = fts->CreateTransport(spec, "load", 0, 0, &trans); NS_ASSERTION(NS_SUCCEEDED(rv), "create failed"); rv = trans->AsyncRead(0, -1, nsnull, listener); diff --git a/mozilla/netwerk/test/TestFileInput2.cpp b/mozilla/netwerk/test/TestFileInput2.cpp index 82d522d0269..184ce0f0737 100644 --- a/mozilla/netwerk/test/TestFileInput2.cpp +++ b/mozilla/netwerk/test/TestFileInput2.cpp @@ -266,13 +266,27 @@ public: nsIFileChannel* inCh = nsnull; nsIFileChannel* outCh = nsnull; - rv = ioserv->NewChannelFromNativePath(mInPath, &inCh); + rv = ioserv->NewChannelFromNativePath(mInPath, + nsnull, // aLoadGroup + nsnull, // notificationCallbacks + nsIChannel::LOAD_NORMAL, + nsnull, // originalURI + 0, // bufferSegmentSize + 0, // bufferMaxSize + &inCh); if (NS_FAILED(rv)) goto done; rv = inCh->OpenInputStream(0, -1, &inStr); if (NS_FAILED(rv)) goto done; - rv = ioserv->NewChannelFromNativePath(mOutPath, &outCh); + rv = ioserv->NewChannelFromNativePath(mOutPath, + nsnull, // aLoadGroup + nsnull, // notificationCallbacks + nsIChannel::LOAD_NORMAL, + nsnull, // originalURI + 0, // bufferSegmentSize + 0, // bufferMaxSize + &outCh); if (NS_FAILED(rv)) goto done; rv = outCh->OpenOutputStream(0, &outStr); diff --git a/mozilla/netwerk/test/TestFileTransport.cpp b/mozilla/netwerk/test/TestFileTransport.cpp index c4c2c6c10b9..e65f5f423cd 100644 --- a/mozilla/netwerk/test/TestFileTransport.cpp +++ b/mozilla/netwerk/test/TestFileTransport.cpp @@ -126,7 +126,7 @@ TestAsyncRead(const char* fileName, PRUint32 offset, PRInt32 length) nsFileSpec fs(fileName); nsIChannel* fileTrans; - rv = fts->CreateTransport(fs, "load", &fileTrans); + rv = fts->CreateTransport(fs, "load", 0, 0, &fileTrans); if (NS_FAILED(rv)) return rv; MyListener* listener = new MyListener(); @@ -167,7 +167,7 @@ TestAsyncWrite(const char* fileName, PRUint32 offset, PRInt32 length) outFile += ".out"; nsFileSpec fs(outFile); nsIChannel* fileTrans; - rv = fts->CreateTransport(fs, "load", &fileTrans); + rv = fts->CreateTransport(fs, "load", 0, 0, &fileTrans); if (NS_FAILED(rv)) return rv; MyListener* listener = new MyListener(); @@ -243,7 +243,7 @@ TestAsyncOpen(const char* fileName, PRUint32 offset, PRInt32 length) nsFileSpec fs(fileName); nsIChannel* fileTrans; - rv = fts->CreateTransport(fs, "load", &fileTrans); + rv = fts->CreateTransport(fs, "load", 0, 0, &fileTrans); if (NS_FAILED(rv)) return rv; MyListener* listener = new MyListener(1); diff --git a/mozilla/netwerk/test/TestProtocols.cpp b/mozilla/netwerk/test/TestProtocols.cpp index aaf8581ba30..20638103d19 100644 --- a/mozilla/netwerk/test/TestProtocols.cpp +++ b/mozilla/netwerk/test/TestProtocols.cpp @@ -521,6 +521,7 @@ nsresult StartLoadingURL(const char* aUrlString) callbacks, // notificationCallbacks nsIChannel::LOAD_NORMAL, nsnull, // originalURI + 0, 0, getter_AddRefs(pChannel)); NS_RELEASE(callbacks); if (NS_FAILED(rv)) { diff --git a/mozilla/netwerk/test/TestRes.cpp b/mozilla/netwerk/test/TestRes.cpp index ec04fb7c321..3a7fe9d124a 100644 --- a/mozilla/netwerk/test/TestRes.cpp +++ b/mozilla/netwerk/test/TestRes.cpp @@ -70,7 +70,7 @@ TestOpenInputStream(const char* url) nsCOMPtr channel; rv = serv->NewChannel("load", url, nsnull, nsnull, nsnull, 0, nsnull, - getter_AddRefs(channel)); + 0, 0, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; nsCOMPtr in; @@ -196,7 +196,7 @@ TestAsyncRead(const char* url) nsCOMPtr channel; rv = serv->NewChannel("load", url, nsnull, nsnull, nsnull, 0, nsnull, - getter_AddRefs(channel)); + 0, 0, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; nsCOMPtr listener = new Listener(); diff --git a/mozilla/netwerk/test/TestSocketIO.cpp b/mozilla/netwerk/test/TestSocketIO.cpp index 1de4796dd09..7cdd3b77d66 100644 --- a/mozilla/netwerk/test/TestSocketIO.cpp +++ b/mozilla/netwerk/test/TestSocketIO.cpp @@ -242,7 +242,7 @@ main(int argc, char* argv[]) // Create the socket transport... nsIChannel* transport; - rv = sts->CreateTransport(hostName, port, hostName, &transport); + rv = sts->CreateTransport(hostName, port, hostName, 0, 0, &transport); // This stuff is used to test the output stream #if 0 diff --git a/mozilla/netwerk/test/TestSocketInput.cpp b/mozilla/netwerk/test/TestSocketInput.cpp index 2156b7f0cae..11407922f91 100644 --- a/mozilla/netwerk/test/TestSocketInput.cpp +++ b/mozilla/netwerk/test/TestSocketInput.cpp @@ -161,7 +161,7 @@ main(int argc, char* argv[]) nsIChannel* transport; - rv = sts->CreateTransport(hostName, port, hostName, &transport); + rv = sts->CreateTransport(hostName, port, hostName, 0, 0, &transport); if (NS_SUCCEEDED(rv)) { transport->AsyncRead(0, -1, nsnull, new InputTestConsumer); diff --git a/mozilla/netwerk/test/TestSocketTransport.cpp b/mozilla/netwerk/test/TestSocketTransport.cpp index fc250499dae..16de3f63256 100644 --- a/mozilla/netwerk/test/TestSocketTransport.cpp +++ b/mozilla/netwerk/test/TestSocketTransport.cpp @@ -281,7 +281,7 @@ TestConnection::TestConnection(const char* aHostName, PRInt32 aPort, // Create a socket transport... NS_WITH_SERVICE(nsISocketTransportService, sts, kSocketTransportServiceCID, &rv); if (NS_SUCCEEDED(rv)) { - rv = sts->CreateTransport(aHostName, aPort, aHostName, &mTransport); + rv = sts->CreateTransport(aHostName, aPort, aHostName, 0, 0, &mTransport); } diff --git a/mozilla/profile/Acct/nsAccount.cpp b/mozilla/profile/Acct/nsAccount.cpp index bdce88038dd..a75cc316030 100644 --- a/mozilla/profile/Acct/nsAccount.cpp +++ b/mozilla/profile/Acct/nsAccount.cpp @@ -356,7 +356,7 @@ int nsAccount::GetNCIValues(nsString MiddleValue) nsIChannel *channel = nsnull; // XXX NECKO verb? loadgroup? getter? ret = service->NewChannel("load", Trial.ToNewCString(), nsnull, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, &channel); + nsIChannel::LOAD_NORMAL, nsnull, 0, 0, &channel); if (NS_FAILED(ret)) return ret; @@ -446,7 +446,7 @@ int nsAccount::GetConfigValues(nsString fileName) nsIChannel *channel = nsnull; // XXX NECKO verb? loadgroup? getter? ret = service->NewChannel("load", Trial.ToNewCString(), nsnull, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, &channel); + nsIChannel::LOAD_NORMAL, nsnull, 0, 0, &channel); if (NS_FAILED(ret)) return ret; diff --git a/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp index 33f6201eae8..7198f7a7e22 100644 --- a/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp @@ -336,6 +336,8 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, nsIInterfaceRequestor* aNotificationCallbacks, nsLoadFlags aLoadAttributes, nsIURI* aOriginalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel* *aResult) { nsresult rv; @@ -378,6 +380,7 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, aNotificationCallbacks, aLoadAttributes, aOriginalURI ? aOriginalURI : aURI, + bufferSegmentSize, bufferMaxSize, getter_AddRefs(result)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/uriloader/base/nsURILoader.cpp b/mozilla/uriloader/base/nsURILoader.cpp index 0ecbb734cb5..f6e651b9c88 100644 --- a/mozilla/uriloader/base/nsURILoader.cpp +++ b/mozilla/uriloader/base/nsURILoader.cpp @@ -160,7 +160,8 @@ nsresult nsDocumentOpenInfo::Open(nsIURI *aURI, { nsCOMPtr aChannel; rv = pNetService->NewChannelFromURI("", aURI, aLoadGroup, requestor, - nsIChannel::LOAD_NORMAL, aReferringURI, getter_AddRefs(aChannel)); + nsIChannel::LOAD_NORMAL, aReferringURI, 0, 0, + getter_AddRefs(aChannel)); if (NS_FAILED(rv)) return rv; // uhoh we were unable to get a channel to handle the url!!! // figure out if we need to set the post data stream on the channel...right now, // this is only done for http channels..... diff --git a/mozilla/xpcom/tests/PropertiesTest.cpp b/mozilla/xpcom/tests/PropertiesTest.cpp index deb517b9069..e4371db2943 100644 --- a/mozilla/xpcom/tests/PropertiesTest.cpp +++ b/mozilla/xpcom/tests/PropertiesTest.cpp @@ -111,7 +111,7 @@ main(int argc, char* argv[]) nsIChannel *channel = nsnull; // XXX NECKO verb? loadgroup? getter? ret = service->NewChannel("load", TEST_URL, nsnull, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, &channel); + nsIChannel::LOAD_NORMAL, nsnull, 0, 0, &channel); if (NS_FAILED(ret)) return ret; nsIEventQueue *eventQ = nsnull; diff --git a/mozilla/xpfe/appshell/src/nsAbout.cpp b/mozilla/xpfe/appshell/src/nsAbout.cpp index 6a7cabd79a1..9bfc24c3a9a 100644 --- a/mozilla/xpfe/appshell/src/nsAbout.cpp +++ b/mozilla/xpfe/appshell/src/nsAbout.cpp @@ -39,6 +39,8 @@ nsAbout::NewChannel(const char *verb, nsIInterfaceRequestor* notificationCallbacks, nsLoadFlags loadAttributes, nsIURI* originalURI, + PRUint32 bufferSegmentSize, + PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -47,7 +49,8 @@ nsAbout::NewChannel(const char *verb, return rv; rv = ioService->NewChannel(verb, kURI, NULL, aLoadGroup, notificationCallbacks, loadAttributes, - originalURI, result); + originalURI, bufferSegmentSize, bufferMaxSize, + result); return rv; } diff --git a/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp b/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp index af529afa3ab..97166a7c89a 100644 --- a/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp +++ b/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp @@ -160,8 +160,7 @@ nsStreamXferOp::Start( void ) { // Next, create output file channel. nsFileSpec target; mOutputSpec->GetFileSpec( &target ); - rv = fts->CreateTransport( target, - "load", + rv = fts->CreateTransport( target, "load", 0, 0, getter_AddRefs( mOutputChannel ) ); if ( NS_SUCCEEDED( rv ) ) {