diff --git a/mozilla/content/html/document/src/nsWyciwygChannel.cpp b/mozilla/content/html/document/src/nsWyciwygChannel.cpp index 918cfb2c1fd..39add3dd2fa 100644 --- a/mozilla/content/html/document/src/nsWyciwygChannel.cpp +++ b/mozilla/content/html/document/src/nsWyciwygChannel.cpp @@ -462,8 +462,10 @@ nsWyciwygChannel::OnDataAvailable(nsIRequest *request, nsISupports *ctx, rv = mListener->OnDataAvailable(this, mListenerContext, input, offset, count); + // XXX handle 64-bit stuff for real if (mProgressSink && NS_SUCCEEDED(rv) && !(mLoadFlags & LOAD_BACKGROUND)) - mProgressSink->OnProgress(this, nsnull, offset + count, mContentLength); + mProgressSink->OnProgress(this, nsnull, nsUint64(offset + count), + nsUint64(mContentLength)); return rv; // let the pump cancel on failure } @@ -577,7 +579,7 @@ nsWyciwygChannel::ReadFromCache() return rv; NS_ENSURE_TRUE(mCacheInputStream, NS_ERROR_UNEXPECTED); - rv = NS_NewInputStreamPump(getter_AddRefs(mPump), mCacheInputStream, -1); + rv = NS_NewInputStreamPump(getter_AddRefs(mPump), mCacheInputStream); if (NS_FAILED(rv)) return rv; // Pump the cache data downstream diff --git a/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.cpp b/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.cpp index a8cdfc93b12..3d21600a386 100644 --- a/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.cpp +++ b/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.cpp @@ -59,6 +59,7 @@ #include "nsIStringEnumerator.h" #include "nsCRT.h" #include "nsSupportsArray.h" +#include "nsInt64.h" #include "nsCExternalHandlerService.h" @@ -145,8 +146,8 @@ struct OutputData nsCOMPtr mFile; nsCOMPtr mOriginalLocation; nsCOMPtr mStream; - PRInt32 mSelfProgress; - PRInt32 mSelfProgressMax; + nsInt64 mSelfProgress; + nsInt64 mSelfProgressMax; PRPackedBool mCalcFileExt; OutputData(nsIURI *aFile, nsIURI *aOriginalLocation, PRBool aCalcFileExt) : @@ -169,8 +170,8 @@ struct OutputData struct UploadData { nsCOMPtr mFile; - PRInt32 mSelfProgress; - PRInt32 mSelfProgressMax; + nsInt64 mSelfProgress; + nsInt64 mSelfProgressMax; UploadData(nsIURI *aFile) : mFile(aFile), @@ -924,8 +925,8 @@ NS_IMETHODIMP nsWebBrowserPersist::OnDataAvailable( /* void onProgress (in nsIRequest request, in nsISupports ctxt, in unsigned long aProgress, in unsigned long aProgressMax); */ NS_IMETHODIMP nsWebBrowserPersist::OnProgress( - nsIRequest *request, nsISupports *ctxt, PRUint32 aProgress, - PRUint32 aProgressMax) + nsIRequest *request, nsISupports *ctxt, PRUint64 aProgress, + PRUint64 aProgressMax) { if (!mProgressListener) { @@ -938,23 +939,24 @@ NS_IMETHODIMP nsWebBrowserPersist::OnProgress( OutputData *data = (OutputData *) mOutputMap.Get(&key); if (data) { - data->mSelfProgress = aProgress; - data->mSelfProgressMax = aProgressMax; + data->mSelfProgress = PRInt64(aProgress); + data->mSelfProgressMax = PRInt64(aProgressMax); } else { UploadData *upData = (UploadData *) mUploadList.Get(&key); if (upData) { - upData->mSelfProgress = aProgress; - upData->mSelfProgressMax = aProgressMax; + upData->mSelfProgress = PRInt64(aProgress); + upData->mSelfProgressMax = PRInt64(aProgressMax); } } // Notify listener of total progress CalcTotalProgress(); - mProgressListener->OnProgressChange(nsnull, request, aProgress, - aProgressMax, mTotalCurrentProgress, mTotalMaxProgress); + // XXX this truncates 64-bit to 32bit + mProgressListener->OnProgressChange(nsnull, request, nsUint64(aProgress), + nsUint64(aProgressMax), mTotalCurrentProgress, mTotalMaxProgress); return NS_OK; @@ -2371,7 +2373,7 @@ nsWebBrowserPersist::CalcTotalProgress() } // XXX this code seems pretty bogus and pointless - if (mTotalCurrentProgress == 0 && mTotalMaxProgress == 0) + if (mTotalCurrentProgress == LL_ZERO && mTotalMaxProgress == LL_ZERO) { // No output streams so we must be complete mTotalCurrentProgress = 10000; diff --git a/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.h b/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.h index c77fb67349f..505e5999b10 100644 --- a/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.h +++ b/mozilla/embedding/components/webbrowserpersist/src/nsWebBrowserPersist.h @@ -58,6 +58,7 @@ #include "nsHashtable.h" #include "nsVoidArray.h" +#include "nsInt64.h" #include "nsCWebBrowserPersist.h" @@ -211,8 +212,8 @@ private: PRPackedBool mSerializingOutput; PRUint32 mPersistFlags; PRUint32 mPersistResult; - PRInt32 mTotalCurrentProgress; - PRInt32 mTotalMaxProgress; + nsInt64 mTotalCurrentProgress; + nsInt64 mTotalMaxProgress; PRInt16 mWrapColumn; PRUint32 mEncodingFlags; nsString mContentType; diff --git a/mozilla/embedding/tests/wxEmbed/GeckoProtocolHandler.cpp b/mozilla/embedding/tests/wxEmbed/GeckoProtocolHandler.cpp index 161fc6a4161..2749a9f90b7 100644 --- a/mozilla/embedding/tests/wxEmbed/GeckoProtocolHandler.cpp +++ b/mozilla/embedding/tests/wxEmbed/GeckoProtocolHandler.cpp @@ -376,8 +376,10 @@ GeckoProtocolChannel::AsyncOpen(nsIStreamListener *aListener, nsISupports *aCont mListenerContext = aContext; mListener = aListener; + // XXX should this use 64-bit content lengths? nsresult rv = NS_NewInputStreamPump( - getter_AddRefs(mPump), mContentStream, -1, mContentLength, 0, 0, PR_TRUE); + getter_AddRefs(mPump), mContentStream, nsInt64(-1), + nsInt64(mContentLength), 0, 0, PR_TRUE); if (NS_FAILED(rv)) return rv; if (mLoadGroup) @@ -542,8 +544,10 @@ GeckoProtocolChannel::OnDataAvailable(nsIRequest *req, nsISupports *ctx, rv = mListener->OnDataAvailable(this, mListenerContext, stream, offset, count); + // XXX can this use real 64-bit ints? if (mProgressSink && NS_SUCCEEDED(rv) && !(mLoadFlags & LOAD_BACKGROUND)) - mProgressSink->OnProgress(this, nsnull, offset + count, mContentLength); + mProgressSink->OnProgress(this, nsnull, nsUint64(offset + count), + nsUint64(mContentLength)); return rv; // let the pump cancel on failure } diff --git a/mozilla/extensions/datetime/nsDateTimeChannel.cpp b/mozilla/extensions/datetime/nsDateTimeChannel.cpp index 7becbb48f5e..03786156a12 100644 --- a/mozilla/extensions/datetime/nsDateTimeChannel.cpp +++ b/mozilla/extensions/datetime/nsDateTimeChannel.cpp @@ -412,11 +412,11 @@ nsDateTimeChannel::OnDataAvailable(nsIRequest *req, nsISupports *ctx, NS_IMETHODIMP nsDateTimeChannel::OnTransportStatus(nsITransport *trans, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { // suppress status notification if channel is no longer pending! if (mProgressSink && NS_SUCCEEDED(mStatus) && mPump && !(mLoadFlags & LOAD_BACKGROUND)) { - NS_ConvertUTF8toUCS2 host(mHost); + NS_ConvertUTF8toUTF16 host(mHost); mProgressSink->OnStatus(this, nsnull, status, host.get()); if (status == nsISocketTransport::STATUS_RECEIVING_FROM || diff --git a/mozilla/extensions/finger/nsFingerChannel.cpp b/mozilla/extensions/finger/nsFingerChannel.cpp index 89acaf19a56..69f777f7ee9 100644 --- a/mozilla/extensions/finger/nsFingerChannel.cpp +++ b/mozilla/extensions/finger/nsFingerChannel.cpp @@ -434,12 +434,12 @@ nsFingerChannel::OnDataAvailable(nsIRequest *req, nsISupports *ctx, NS_IMETHODIMP nsFingerChannel::OnTransportStatus(nsITransport *trans, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { // suppress status notification if channel is no longer pending! if (mProgressSink && NS_SUCCEEDED(mStatus) && mPump && !(mLoadFlags & LOAD_BACKGROUND)) { mProgressSink->OnStatus(this, nsnull, status, - NS_ConvertUTF8toUCS2(mHost).get()); + NS_ConvertUTF8toUTF16(mHost).get()); if (status == nsISocketTransport::STATUS_RECEIVING_FROM || status == nsISocketTransport::STATUS_SENDING_TO) { diff --git a/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.cpp b/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.cpp index 00a9657cf50..d0c8810a806 100644 --- a/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.cpp +++ b/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.cpp @@ -1824,7 +1824,7 @@ nsXMLHttpRequest::OnRedirect(nsIHttpChannel *aHttpChannel, // NS_IMETHODIMP -nsXMLHttpRequest::OnProgress(nsIRequest *aRequest, nsISupports *aContext, PRUint32 aProgress, PRUint32 aProgressMax) +nsXMLHttpRequest::OnProgress(nsIRequest *aRequest, nsISupports *aContext, PRUint64 aProgress, PRUint64 aProgressMax) { if (mOnProgressListener) { @@ -1893,7 +1893,7 @@ nsHeaderVisitor::VisitHeader(const nsACString &header, const nsACString &value) } // DOM event class to handle progress notifications -nsXMLHttpProgressEvent::nsXMLHttpProgressEvent(nsIDOMEvent * aInner, PRUint32 aCurrentProgress, PRUint32 aMaxProgress) +nsXMLHttpProgressEvent::nsXMLHttpProgressEvent(nsIDOMEvent * aInner, PRUint64 aCurrentProgress, PRUint64 aMaxProgress) { mInner = aInner; mCurProgress = aCurrentProgress; @@ -1922,13 +1922,15 @@ NS_IMETHODIMP nsXMLHttpProgressEvent::GetInput(nsIDOMLSInput * *aInput) NS_IMETHODIMP nsXMLHttpProgressEvent::GetPosition(PRUint32 *aPosition) { - *aPosition = mCurProgress; + // XXX can we change the iface? + LL_L2UI(*aPosition, mCurProgress); return NS_OK; } NS_IMETHODIMP nsXMLHttpProgressEvent::GetTotalSize(PRUint32 *aTotalSize) { - *aTotalSize = mMaxProgress; + // XXX can we change the iface? + LL_L2UI(*aTotalSize, mMaxProgress); return NS_OK; } diff --git a/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.h b/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.h index 45a005aec04..2bec4c71041 100644 --- a/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.h +++ b/mozilla/extensions/xmlextras/base/src/nsXMLHttpRequest.h @@ -184,7 +184,7 @@ protected: class nsXMLHttpProgressEvent : public nsIDOMLSProgressEvent { public: - nsXMLHttpProgressEvent(nsIDOMEvent * aInner, PRUint32 aCurrentProgress, PRUint32 aMaxProgress); + nsXMLHttpProgressEvent(nsIDOMEvent * aInner, PRUint64 aCurrentProgress, PRUint64 aMaxProgress); virtual ~nsXMLHttpProgressEvent(); NS_DECL_ISUPPORTS @@ -193,8 +193,8 @@ public: protected: nsCOMPtr mInner; - PRUint32 mCurProgress; - PRUint32 mMaxProgress; + PRUint64 mCurProgress; + PRUint64 mMaxProgress; }; #endif diff --git a/mozilla/mailnews/base/src/nsMsgProgress.cpp b/mozilla/mailnews/base/src/nsMsgProgress.cpp index 59be36e7eb6..c35cc9bc1db 100644 --- a/mozilla/mailnews/base/src/nsMsgProgress.cpp +++ b/mozilla/mailnews/base/src/nsMsgProgress.cpp @@ -44,6 +44,7 @@ #include "nsISupportsPrimitives.h" #include "nsIComponentManager.h" #include "nsNetError.h" +#include "nsInt64.h" NS_IMPL_THREADSAFE_ADDREF(nsMsgProgress) NS_IMPL_THREADSAFE_RELEASE(nsMsgProgress) @@ -361,11 +362,12 @@ NS_IMETHODIMP nsMsgProgress::GetMsgWindow(nsIMsgWindow **aMsgWindow) NS_IMETHODIMP nsMsgProgress::OnProgress(nsIRequest *request, nsISupports* ctxt, - PRUint32 aProgress, PRUint32 aProgressMax) + PRUint64 aProgress, PRUint64 aProgressMax) { // XXX: What should the nsIWebProgress be? - return OnProgressChange(nsnull, request, aProgress, aProgressMax, - aProgress /* current total progress */, aProgressMax /* max total progress */); + // XXX: This truncates 64-bit to 32-bit + return OnProgressChange(nsnull, request, nsUint64(aProgress), nsUint64(aProgressMax), + nsUint64(aProgress) /* current total progress */, nsUint64(aProgressMax) /* max total progress */); } NS_IMETHODIMP nsMsgProgress::OnStatus(nsIRequest *request, nsISupports* ctxt, diff --git a/mozilla/mailnews/base/src/nsMsgStatusFeedback.cpp b/mozilla/mailnews/base/src/nsMsgStatusFeedback.cpp index 7d31db20301..b03ede02072 100644 --- a/mozilla/mailnews/base/src/nsMsgStatusFeedback.cpp +++ b/mozilla/mailnews/base/src/nsMsgStatusFeedback.cpp @@ -52,6 +52,7 @@ #include "nsIDocShellTreeItem.h" #include "nsIChannel.h" #include "prinrval.h" +#include "nsInt64.h" #include "nsITimelineService.h" #include "nsIMsgMailNewsUrl.h" #include "nsIMimeMiscStatus.h" @@ -318,11 +319,12 @@ NS_IMETHODIMP nsMsgStatusFeedback::SetDocShell(nsIDocShell *shell, nsIDOMWindow } NS_IMETHODIMP nsMsgStatusFeedback::OnProgress(nsIRequest *request, nsISupports* ctxt, - PRUint32 aProgress, PRUint32 aProgressMax) + PRUint64 aProgress, PRUint64 aProgressMax) { // XXX: What should the nsIWebProgress be? - return OnProgressChange(nsnull, request, aProgress, aProgressMax, - aProgress /* current total progress */, aProgressMax /* max total progress */); + // XXX: this truncates 64-bit to 32-bit + return OnProgressChange(nsnull, request, nsUint64(aProgress), nsUint64(aProgressMax), + nsUint64(aProgress) /* current total progress */, nsUint64(aProgressMax) /* max total progress */); } NS_IMETHODIMP nsMsgStatusFeedback::OnStatus(nsIRequest *request, nsISupports* ctxt, diff --git a/mozilla/mailnews/base/util/nsMsgProtocol.cpp b/mozilla/mailnews/base/util/nsMsgProtocol.cpp index d65c62dad66..7a52678f247 100644 --- a/mozilla/mailnews/base/util/nsMsgProtocol.cpp +++ b/mozilla/mailnews/base/util/nsMsgProtocol.cpp @@ -246,7 +246,9 @@ nsresult nsMsgProtocol::OpenFileSocket(nsIURI * aURL, PRUint32 aStartPosition, P do_GetService(kStreamTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = sts->CreateInputTransport(stream, aStartPosition, aReadCount, PR_TRUE, getter_AddRefs(m_transport)); + rv = sts->CreateInputTransport(stream, nsInt64(aStartPosition), + nsInt64(aReadCount), PR_TRUE, + getter_AddRefs(m_transport)); m_socketIsOpen = PR_FALSE; return rv; @@ -468,7 +470,7 @@ nsresult nsMsgProtocol::LoadUrl(nsIURI * aURL, nsISupports * aConsumer) nsCOMPtr pump; rv = NS_NewInputStreamPump(getter_AddRefs(pump), - m_inputStream, -1, m_readCount); + m_inputStream, nsInt64(-1), m_readCount); if (NS_FAILED(rv)) return rv; m_request = pump; // keep a reference to the pump so we can cancel it @@ -656,7 +658,7 @@ nsMsgProtocol::SetNotificationCallbacks(nsIInterfaceRequestor* aNotificationCall NS_IMETHODIMP nsMsgProtocol::OnTransportStatus(nsITransport *transport, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { if ((mLoadFlags & LOAD_BACKGROUND) || !m_url) return NS_OK; diff --git a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp index a29864a9e7c..f208550eb6d 100644 --- a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp @@ -5927,7 +5927,10 @@ nsImapMailFolder::PercentProgress(nsIImapProtocol* aProtocol, nsCOMPtr request = do_QueryInterface(mockChannel); if (!request) return NS_ERROR_FAILURE; - progressSink->OnProgress(request, nsnull, aInfo->currentProgress, aInfo->maxProgress); + // XXX handle 64-bit ints for real + progressSink->OnProgress(request, nsnull, + nsUint64(aInfo->currentProgress), + nsUint64(aInfo->maxProgress)); if (aInfo->message) progressSink->OnStatus(request, nsnull, NS_OK, aInfo->message); // XXX i18n message diff --git a/mozilla/mailnews/imap/src/nsImapProtocol.cpp b/mozilla/mailnews/imap/src/nsImapProtocol.cpp index 100ca3ee95e..8afb668f630 100644 --- a/mozilla/mailnews/imap/src/nsImapProtocol.cpp +++ b/mozilla/mailnews/imap/src/nsImapProtocol.cpp @@ -8179,8 +8179,10 @@ PRBool nsImapMockChannel::ReadFromLocalCache() cacheListener->Init(m_channelListener, this); // create a stream pump that will async read the specified amount of data. + // XXX make offset/size 64-bit ints nsCOMPtr pump; - rv = NS_NewInputStreamPump(getter_AddRefs(pump), fileStream, offset, size); + rv = NS_NewInputStreamPump(getter_AddRefs(pump), fileStream, + nsInt64(offset), nsInt64(size)); if (NS_SUCCEEDED(rv)) rv = pump->AsyncRead(cacheListener, m_channelContext); @@ -8448,7 +8450,7 @@ nsImapMockChannel::SetNotificationCallbacks(nsIInterfaceRequestor* aNotification NS_IMETHODIMP nsImapMockChannel::OnTransportStatus(nsITransport *transport, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { if (NS_FAILED(m_cancelStatus) || (mLoadFlags & LOAD_BACKGROUND) || !m_url) return NS_OK; diff --git a/mozilla/mailnews/local/src/nsMailboxProtocol.cpp b/mozilla/mailnews/local/src/nsMailboxProtocol.cpp index 08d8bb277c9..41ea7310d6e 100644 --- a/mozilla/mailnews/local/src/nsMailboxProtocol.cpp +++ b/mozilla/mailnews/local/src/nsMailboxProtocol.cpp @@ -133,7 +133,10 @@ nsresult nsMailboxProtocol::OpenMultipleMsgTransport(PRUint32 offset, PRInt32 si do_GetService(kStreamTransportServiceCID, &rv); NS_ENSURE_SUCCESS(rv, rv); - rv = serv->CreateInputTransport(m_multipleMsgMoveCopyStream, offset, size, PR_FALSE, getter_AddRefs(m_transport)); + // XXX 64-bit + rv = serv->CreateInputTransport(m_multipleMsgMoveCopyStream, nsInt64(offset), + nsInt64(size), PR_FALSE, + getter_AddRefs(m_transport)); return rv; } @@ -656,7 +659,10 @@ PRInt32 nsMailboxProtocol::ReadMessageResponse(nsIInputStream * inputStream, PRU { PRInt32 contentLength = 0; GetContentLength(&contentLength); - mProgressEventSink->OnProgress(this, m_channelContext, mCurrentProgress, contentLength); + // XXX 64-bit + mProgressEventSink->OnProgress(this, m_channelContext, + nsUint64(mCurrentProgress), + nsUint64(contentLength)); } if (NS_FAILED(rv)) return -1; diff --git a/mozilla/mailnews/local/src/nsPop3Protocol.cpp b/mozilla/mailnews/local/src/nsPop3Protocol.cpp index ed33d436072..4115a20952f 100644 --- a/mozilla/mailnews/local/src/nsPop3Protocol.cpp +++ b/mozilla/mailnews/local/src/nsPop3Protocol.cpp @@ -673,8 +673,9 @@ void nsPop3Protocol::UpdateStatusWithString(const PRUnichar * aStatusString) void nsPop3Protocol::UpdateProgressPercent (PRUint32 totalDone, PRUint32 total) { + // XXX 64-bit if (mProgressEventSink) - mProgressEventSink->OnProgress(this, m_channelContext, (PRInt32) totalDone, (PRInt32) total); + mProgressEventSink->OnProgress(this, m_channelContext, nsUint64(totalDone), nsUint64(total)); } // note: SetUsername() expects an unescaped string diff --git a/mozilla/mailnews/news/src/nsNNTPProtocol.cpp b/mozilla/mailnews/news/src/nsNNTPProtocol.cpp index 06543ee6290..561026a6a98 100644 --- a/mozilla/mailnews/news/src/nsNNTPProtocol.cpp +++ b/mozilla/mailnews/news/src/nsNNTPProtocol.cpp @@ -839,9 +839,10 @@ PRBool nsNNTPProtocol::ReadFromLocalCache() cacheListener->Init(m_channelListener, NS_STATIC_CAST(nsIChannel *, this), mailnewsUrl); // create a stream pump that will async read the specified amount of data. + // XXX make offset and size 64-bit ints nsCOMPtr pump; rv = NS_NewInputStreamPump(getter_AddRefs(pump), - fileStream, offset, size); + fileStream, nsInt64(offset), nsInt64(size)); if (NS_SUCCEEDED(rv)) rv = pump->AsyncRead(cacheListener, m_channelContext); @@ -5344,8 +5345,10 @@ nsresult nsNNTPProtocol::CloseSocket() void nsNNTPProtocol::SetProgressBarPercent(PRUint32 aProgress, PRUint32 aProgressMax) { + // XXX 64-bit if (mProgressEventSink) - mProgressEventSink->OnProgress(this, m_channelContext, aProgress, aProgressMax); + mProgressEventSink->OnProgress(this, m_channelContext, nsUint64(aProgress), + nsUint64(aProgressMax)); } nsresult diff --git a/mozilla/modules/libjar/nsJARChannel.cpp b/mozilla/modules/libjar/nsJARChannel.cpp index f91fbf285e3..3ab6f44a1c6 100644 --- a/mozilla/modules/libjar/nsJARChannel.cpp +++ b/mozilla/modules/libjar/nsJARChannel.cpp @@ -40,6 +40,7 @@ #include "nsJARProtocolHandler.h" #include "nsMimeTypes.h" #include "nsNetUtil.h" +#include "nsInt64.h" #include "nsIScriptSecurityManager.h" #include "nsIPrincipal.h" @@ -715,8 +716,10 @@ nsJARChannel::OnDataAvailable(nsIRequest *req, nsISupports *ctx, // simply report progress here instead of hooking ourselves up as a // nsITransportEventSink implementation. + // XXX do the 64-bit stuff for real if (mProgressSink && NS_SUCCEEDED(rv) && !(mLoadFlags & LOAD_BACKGROUND)) - mProgressSink->OnProgress(this, nsnull, offset + count, mContentLength); + mProgressSink->OnProgress(this, nsnull, nsUint64(offset + count), + nsUint64(mContentLength)); return rv; // let the pump cancel on failure } diff --git a/mozilla/modules/libpr0n/decoders/icon/os2/nsIconChannel.cpp b/mozilla/modules/libpr0n/decoders/icon/os2/nsIconChannel.cpp index 265774cbdf8..8e8fce793c3 100644 --- a/mozilla/modules/libpr0n/decoders/icon/os2/nsIconChannel.cpp +++ b/mozilla/modules/libpr0n/decoders/icon/os2/nsIconChannel.cpp @@ -52,6 +52,7 @@ #include "nsIStringStream.h" #include "nsIURL.h" #include "nsNetUtil.h" +#include "nsInt64.h" #include "nsIFile.h" #include "nsIFileURL.h" #include "nsIMIMEService.h" @@ -413,7 +414,7 @@ NS_IMETHODIMP nsIconChannel::AsyncOpen(nsIStreamListener *aListener, nsISupports return rv; // Init our streampump - rv = mPump->Init(inStream, -1, -1, 0, 0, PR_FALSE); + rv = mPump->Init(inStream, nsInt64(-1), nsInt64(-1), 0, 0, PR_FALSE); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/modules/libpr0n/decoders/icon/win/nsIconChannel.cpp b/mozilla/modules/libpr0n/decoders/icon/win/nsIconChannel.cpp index b173f0b7817..72102b7111d 100644 --- a/mozilla/modules/libpr0n/decoders/icon/win/nsIconChannel.cpp +++ b/mozilla/modules/libpr0n/decoders/icon/win/nsIconChannel.cpp @@ -52,6 +52,7 @@ #include "nsIStringStream.h" #include "nsIURL.h" #include "nsNetUtil.h" +#include "nsInt64.h" #include "nsIFile.h" #include "nsIFileURL.h" #include "nsIMIMEService.h" @@ -222,7 +223,7 @@ NS_IMETHODIMP nsIconChannel::AsyncOpen(nsIStreamListener *aListener, nsISupports return rv; // Init our streampump - rv = mPump->Init(inStream, -1, -1, 0, 0, PR_FALSE); + rv = mPump->Init(inStream, nsInt64(-1), nsInt64(-1), 0, 0, PR_FALSE); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp index 96cad9ab129..657ae46948d 100644 --- a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp @@ -2103,8 +2103,8 @@ nsPluginStreamListenerPeer::OnStartRequest(nsIRequest *request, //////////////////////////////////////////////////////////////////////// NS_IMETHODIMP nsPluginStreamListenerPeer::OnProgress(nsIRequest *request, nsISupports* aContext, - PRUint32 aProgress, - PRUint32 aProgressMax) + PRUint64 aProgress, + PRUint64 aProgressMax) { nsresult rv = NS_OK; return rv; @@ -2187,12 +2187,15 @@ NS_IMETHODIMP nsPluginStreamListenerPeer::OnDataAvailable(nsIRequest *request, { // get the absolute offset of the request, if one exists. nsCOMPtr brr = do_QueryInterface(request); - PRInt32 absoluteOffset = 0; if (brr) { if (!mDataForwardToRequest) return NS_ERROR_FAILURE; - brr->GetStartRange(&absoluteOffset); + PRInt64 absoluteOffset64 = LL_ZERO; + brr->GetStartRange(&absoluteOffset64); + + // XXX handle 64-bit for real + PRInt32 absoluteOffset = (PRInt32)nsInt64(absoluteOffset64); // we need to track how much data we have forwarded to the // plugin. @@ -2263,8 +2266,10 @@ NS_IMETHODIMP nsPluginStreamListenerPeer::OnStopRequest(nsIRequest *request, // for ByteRangeRequest we're just updating the mDataForwardToRequest hash and return. nsCOMPtr brr = do_QueryInterface(request); if (brr) { - PRInt32 absoluteOffset = 0; - brr->GetStartRange(&absoluteOffset); + PRInt64 absoluteOffset64 = LL_ZERO; + brr->GetStartRange(&absoluteOffset64); + // XXX support 64-bit offsets + PRInt32 absoluteOffset = (PRInt32)nsInt64(absoluteOffset64); nsPRUintKey key(absoluteOffset); diff --git a/mozilla/netwerk/base/public/nsIByteRangeRequest.idl b/mozilla/netwerk/base/public/nsIByteRangeRequest.idl index 008ece699e3..038c9af5995 100644 --- a/mozilla/netwerk/base/public/nsIByteRangeRequest.idl +++ b/mozilla/netwerk/base/public/nsIByteRangeRequest.idl @@ -38,7 +38,7 @@ #include "nsISupports.idl" -[scriptable, uuid(39befdb9-fa76-469b-85dc-a617b81f26eb)] +[scriptable, uuid(C1B1F426-7E83-4759-9F88-0E1B17F49366)] interface nsIByteRangeRequest : nsISupports { /** @@ -51,10 +51,10 @@ interface nsIByteRangeRequest : nsISupports /** * Absolute start position in remote file for this request. */ - readonly attribute long startRange; + readonly attribute long long startRange; /** * Absolute end postion in remote file for this request */ - readonly attribute long endRange; + readonly attribute long long endRange; }; diff --git a/mozilla/netwerk/base/public/nsICachingChannel.idl b/mozilla/netwerk/base/public/nsICachingChannel.idl index e738e482e7b..7af1ab532fb 100644 --- a/mozilla/netwerk/base/public/nsICachingChannel.idl +++ b/mozilla/netwerk/base/public/nsICachingChannel.idl @@ -42,7 +42,7 @@ interface nsIFile; /** * A channel may optionally implement this interface to allow clients - * to effect its behavior with respect to how it uses the cache service. + * to affect its behavior with respect to how it uses the cache service. * * This interface provides: * 1) Support for "stream as file" semantics (for JAR and plugins). diff --git a/mozilla/netwerk/base/public/nsIContentSniffer.idl b/mozilla/netwerk/base/public/nsIContentSniffer.idl index f550d9812d2..9cac92f4769 100644 --- a/mozilla/netwerk/base/public/nsIContentSniffer.idl +++ b/mozilla/netwerk/base/public/nsIContentSniffer.idl @@ -49,7 +49,7 @@ interface nsIContentSniffer : nsISupports * @param aData Data to check * @param aLength Length of the data * - * @throw NS_ERROR_NOT_AVAILABLE if no MIME type could be determinted. + * @throw NS_ERROR_NOT_AVAILABLE if no MIME type could be determined. */ ACString getMIMETypeFromContent([const,array,size_is(aLength)] in octet aData, in unsigned long aLength); diff --git a/mozilla/netwerk/base/public/nsIInputStreamPump.idl b/mozilla/netwerk/base/public/nsIInputStreamPump.idl index 089a500e870..026429ca720 100644 --- a/mozilla/netwerk/base/public/nsIInputStreamPump.idl +++ b/mozilla/netwerk/base/public/nsIInputStreamPump.idl @@ -20,6 +20,7 @@ * * Contributor(s): * Darin Fisher + * Christian Biesinger * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or @@ -54,7 +55,7 @@ interface nsIStreamListener; * the stream will be read on a background thread utilizing the stream * transport service. More details are provided below. */ -[scriptable, uuid(f7dd8d87-efa7-48cc-9d94-df488df0b3f9)] +[scriptable, uuid(400F5468-97E7-4d2b-9C65-A82AECC7AE82)] interface nsIInputStreamPump : nsIRequest { /** @@ -85,8 +86,8 @@ interface nsIInputStreamPump : nsIRequest * if true, the input stream will be closed after it has been read. */ void init(in nsIInputStream aStream, - in long aStreamPos, - in long aStreamLen, + in long long aStreamPos, + in long long aStreamLen, in unsigned long aSegmentSize, in unsigned long aSegmentCount, in boolean aCloseWhenDone); diff --git a/mozilla/netwerk/base/public/nsIMIMEInputStream.idl b/mozilla/netwerk/base/public/nsIMIMEInputStream.idl index b4594f7db6c..abce3048646 100644 --- a/mozilla/netwerk/base/public/nsIMIMEInputStream.idl +++ b/mozilla/netwerk/base/public/nsIMIMEInputStream.idl @@ -61,7 +61,7 @@ interface nsIMIMEInputStream : nsIInputStream * @param name name of the header * @param value value of the header */ - void addHeader([const] in string name, [const] in string value); + void addHeader(in string name, in string value); /** * Sets data-stream. May not be called once the stream has been started diff --git a/mozilla/netwerk/base/public/nsIProgressEventSink.idl b/mozilla/netwerk/base/public/nsIProgressEventSink.idl index 844d03f1bac..a11465a8513 100644 --- a/mozilla/netwerk/base/public/nsIProgressEventSink.idl +++ b/mozilla/netwerk/base/public/nsIProgressEventSink.idl @@ -61,7 +61,7 @@ interface nsIRequest; * * @status UNDER_REVIEW */ -[scriptable, uuid(dd47ee00-18c2-11d3-9337-00104ba0fd40)] +[scriptable, uuid(D974C99E-4148-4df9-8D98-DE834A2F6462)] interface nsIProgressEventSink : nsISupports { /** @@ -78,12 +78,12 @@ interface nsIProgressEventSink : nsISupports * number of bytes transfered thus far. * @param aProgressMax * numeric value indicating maximum number of bytes that will be - * transfered (or 0xFFFFFFFF if total is unknown). + * transfered (or 0xFFFFFFFFFFFFFFFF if total is unknown). */ void onProgress(in nsIRequest aRequest, in nsISupports aContext, - in unsigned long aProgress, - in unsigned long aProgressMax); + in unsigned long long aProgress, + in unsigned long long aProgressMax); /** * Called to notify the event sink with a status message for the given diff --git a/mozilla/netwerk/base/public/nsISecurityEventSink.idl b/mozilla/netwerk/base/public/nsISecurityEventSink.idl index 812ddc111a3..ed099fc6752 100644 --- a/mozilla/netwerk/base/public/nsISecurityEventSink.idl +++ b/mozilla/netwerk/base/public/nsISecurityEventSink.idl @@ -46,7 +46,7 @@ interface nsISecurityEventSink : nsISupports * Fired when a security change occurs due to page transitions, * or end document load. This interface should be called by * a security package (eg Netscape Personal Security Manager) - * to notify nwIWebProgressListeners that security state has + * to notify nsIWebProgressListeners that security state has * changed. State flags are in nsIWebProgressListener.idl */ diff --git a/mozilla/netwerk/base/public/nsIStreamLoader.idl b/mozilla/netwerk/base/public/nsIStreamLoader.idl index 9413a1e134d..f237aa8be7f 100644 --- a/mozilla/netwerk/base/public/nsIStreamLoader.idl +++ b/mozilla/netwerk/base/public/nsIStreamLoader.idl @@ -56,6 +56,8 @@ interface nsIStreamLoaderObserver : nsISupports /** * Asynchronously loads a channel into a memory buffer. + * + * XXX define behaviour for sizes >4 GB */ [scriptable, uuid(31d37360-8e5a-11d3-93ad-00104ba0fd40)] interface nsIStreamLoader : nsISupports diff --git a/mozilla/netwerk/base/public/nsIStreamTransportService.idl b/mozilla/netwerk/base/public/nsIStreamTransportService.idl index d92526cf0fe..f9bf3be6a58 100644 --- a/mozilla/netwerk/base/public/nsIStreamTransportService.idl +++ b/mozilla/netwerk/base/public/nsIStreamTransportService.idl @@ -48,7 +48,7 @@ interface nsIOutputStream; * into a fully asynchronous stream that can be read/written without * blocking the main thread. */ -[scriptable, uuid(3e0f7a3b-65fd-4e10-92f3-56a8f4622f55)] +[scriptable, uuid(8268D474-EFBF-494f-A152-E8A8616F4E52)] interface nsIStreamTransportService : nsISupports { /** @@ -71,8 +71,8 @@ interface nsIStreamTransportService : nsISupports * @return nsITransport instance. */ nsITransport createInputTransport(in nsIInputStream aStream, - in long aStartOffset, - in long aReadLimit, + in long long aStartOffset, + in long long aReadLimit, in boolean aCloseWhenDone); /** @@ -95,7 +95,7 @@ interface nsIStreamTransportService : nsISupports * @return nsITransport instance. */ nsITransport createOutputTransport(in nsIOutputStream aStream, - in long aStartOffset, - in long aWriteLimit, + in long long aStartOffset, + in long long aWriteLimit, in boolean aCloseWhenDone); }; diff --git a/mozilla/netwerk/base/public/nsITransport.idl b/mozilla/netwerk/base/public/nsITransport.idl index 24bba22e4df..c38ef247611 100644 --- a/mozilla/netwerk/base/public/nsITransport.idl +++ b/mozilla/netwerk/base/public/nsITransport.idl @@ -166,7 +166,7 @@ interface nsITransport : nsISupports const unsigned long STATUS_WRITING = 0x804b0009; }; -[scriptable, uuid(561de8af-1b74-4cd4-8479-89447d48185c)] +[scriptable, uuid(EDA4F520-67F7-484b-A691-8C3226A5B0A6)] interface nsITransportEventSink : nsISupports { /** @@ -187,6 +187,6 @@ interface nsITransportEventSink : nsISupports */ void onTransportStatus(in nsITransport aTransport, in nsresult aStatus, - in unsigned long aProgress, - in unsigned long aProgressMax); + in unsigned long long aProgress, + in unsigned long long aProgressMax); }; diff --git a/mozilla/netwerk/base/public/nsNetUtil.h b/mozilla/netwerk/base/public/nsNetUtil.h index b3a81ba9a22..74e37e7843d 100644 --- a/mozilla/netwerk/base/public/nsNetUtil.h +++ b/mozilla/netwerk/base/public/nsNetUtil.h @@ -85,6 +85,7 @@ #include "nsIPersistentProperties2.h" #include "nsISyncStreamListener.h" #include "nsInterfaceRequestorAgg.h" +#include "nsInt64.h" // Helper, to simplify getting the I/O service. inline const nsGetServiceByCIDWithError @@ -333,8 +334,8 @@ NS_NewInputStreamChannel(nsIChannel **result, inline nsresult NS_NewInputStreamPump(nsIInputStreamPump **result, nsIInputStream *stream, - PRInt32 streamPos = -1, - PRInt32 streamLen = -1, + PRInt64 streamPos = nsInt64(-1), + PRInt64 streamLen = nsInt64(-1), PRUint32 segsize = 0, PRUint32 segcount = 0, PRBool closeWhenDone = PR_FALSE) @@ -772,7 +773,7 @@ NS_BackgroundInputStream(nsIInputStream **aResult, do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID, &rv); if (NS_SUCCEEDED(rv)) { nsCOMPtr inTransport; - rv = sts->CreateInputTransport(aStream, -1, -1, PR_TRUE, + rv = sts->CreateInputTransport(aStream, nsInt64(-1), nsInt64(-1), PR_TRUE, getter_AddRefs(inTransport)); if (NS_SUCCEEDED(rv)) rv = inTransport->OpenInputStream(nsITransport::OPEN_BLOCKING, @@ -796,7 +797,7 @@ NS_BackgroundOutputStream(nsIOutputStream **aResult, do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID, &rv); if (NS_SUCCEEDED(rv)) { nsCOMPtr inTransport; - rv = sts->CreateOutputTransport(aStream, -1, -1, PR_TRUE, + rv = sts->CreateOutputTransport(aStream, nsInt64(-1), nsInt64(-1), PR_TRUE, getter_AddRefs(inTransport)); if (NS_SUCCEEDED(rv)) rv = inTransport->OpenOutputStream(nsITransport::OPEN_BLOCKING, diff --git a/mozilla/netwerk/base/src/nsInputStreamChannel.cpp b/mozilla/netwerk/base/src/nsInputStreamChannel.cpp index 62a1453e263..895e7788614 100644 --- a/mozilla/netwerk/base/src/nsInputStreamChannel.cpp +++ b/mozilla/netwerk/base/src/nsInputStreamChannel.cpp @@ -305,8 +305,11 @@ nsInputStreamChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctxt) if (mContentLength == -1) mContentStream->Available((PRUint32 *) &mContentLength); + // XXX Once nsIChannel and nsIInputStream (in some future revision) + // support 64-bit content lengths, mContentLength should be made 64-bit nsresult rv = NS_NewInputStreamPump(getter_AddRefs(mPump), mContentStream, - -1, mContentLength, 0, 0, PR_TRUE); + nsInt64(-1), nsInt64(mContentLength), + 0, 0, PR_TRUE); if (NS_FAILED(rv)) return rv; rv = mPump->AsyncRead(this, nsnull); @@ -384,8 +387,11 @@ nsInputStreamChannel::OnDataAvailable(nsIRequest *req, nsISupports *ctx, rv = mListener->OnDataAvailable(this, mListenerContext, stream, offset, count); + // XXX need real 64-bit math here! (probably needs new streamlistener and + // channel ifaces) if (mProgressSink && NS_SUCCEEDED(rv) && !(mLoadFlags & LOAD_BACKGROUND)) - mProgressSink->OnProgress(this, nsnull, offset + count, mContentLength); + mProgressSink->OnProgress(this, nsnull, nsUint64(offset + count), + nsUint64(mContentLength)); return rv; // let the pump cancel on failure } diff --git a/mozilla/netwerk/base/src/nsInputStreamPump.cpp b/mozilla/netwerk/base/src/nsInputStreamPump.cpp index c29f6fa9b6b..89c1212b7b8 100644 --- a/mozilla/netwerk/base/src/nsInputStreamPump.cpp +++ b/mozilla/netwerk/base/src/nsInputStreamPump.cpp @@ -214,15 +214,15 @@ nsInputStreamPump::SetLoadGroup(nsILoadGroup *aLoadGroup) NS_IMETHODIMP nsInputStreamPump::Init(nsIInputStream *stream, - PRInt32 streamPos, PRInt32 streamLen, + PRInt64 streamPos, PRInt64 streamLen, PRUint32 segsize, PRUint32 segcount, PRBool closeWhenDone) { NS_ENSURE_TRUE(mState == STATE_IDLE, NS_ERROR_IN_PROGRESS); - mStreamOffset = streamPos; - if (streamLen >= 0) - mStreamLength = streamLen; + mStreamOffset = PRUint64(streamPos); + if (nsInt64(streamLen) >= nsInt64(0)) + mStreamLength = PRUint64(streamLen); mStream = stream; mSegSize = segsize; mSegCount = segcount; @@ -271,7 +271,9 @@ nsInputStreamPump::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) if (NS_FAILED(rv)) return rv; nsCOMPtr transport; - rv = sts->CreateInputTransport(mStream, mStreamOffset, mStreamLength, + // Note: The casts to PRUint64 are needed to cast to PRInt64, as + // nsUint64 can't directly be cast to PRInt64 + rv = sts->CreateInputTransport(mStream, PRUint64(mStreamOffset), PRUint64(mStreamLength), mCloseWhenDone, getter_AddRefs(transport)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/base/src/nsInputStreamPump.h b/mozilla/netwerk/base/src/nsInputStreamPump.h index 24b1645427d..8b2b4ae6612 100644 --- a/mozilla/netwerk/base/src/nsInputStreamPump.h +++ b/mozilla/netwerk/base/src/nsInputStreamPump.h @@ -60,7 +60,7 @@ public: NS_DECL_NSIINPUTSTREAMCALLBACK nsInputStreamPump(); - virtual ~nsInputStreamPump(); + ~nsInputStreamPump(); protected: diff --git a/mozilla/netwerk/base/src/nsSocketTransport2.cpp b/mozilla/netwerk/base/src/nsSocketTransport2.cpp index de485917f0d..af567040d87 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport2.cpp +++ b/mozilla/netwerk/base/src/nsSocketTransport2.cpp @@ -50,6 +50,7 @@ #include "nsAutoLock.h" #include "nsCOMPtr.h" #include "netCore.h" +#include "nsInt64.h" #include "prmem.h" #include "pratom.h" #include "plstr.h" @@ -847,7 +848,7 @@ nsSocketTransport::SendStatus(nsresult status) LOG(("nsSocketTransport::SendStatus [this=%x status=%x]\n", this, status)); nsCOMPtr sink; - PRUint32 progress; + PRUint64 progress; { nsAutoLock lock(mLock); sink = mEventSink; @@ -864,7 +865,7 @@ nsSocketTransport::SendStatus(nsresult status) } } if (sink) - sink->OnTransportStatus(this, status, progress, PR_UINT32_MAX); + sink->OnTransportStatus(this, status, progress, LL_MAXUINT); } nsresult diff --git a/mozilla/netwerk/base/src/nsSocketTransport2.h b/mozilla/netwerk/base/src/nsSocketTransport2.h index e939dc6ea92..f141e50a694 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport2.h +++ b/mozilla/netwerk/base/src/nsSocketTransport2.h @@ -45,6 +45,7 @@ #include "nsSocketTransportService2.h" #include "nsString.h" #include "nsCOMPtr.h" +#include "nsInt64.h" #include "nsISocketTransport.h" #include "nsIInterfaceRequestor.h" @@ -73,7 +74,7 @@ public: PRBool IsReferenced() { return mReaderRefCnt > 0; } nsresult Condition() { return mCondition; } - PRUint32 ByteCount() { return mByteCount; } + PRUint64 ByteCount() { return mByteCount; } // called by the socket transport on the socket thread... void OnSocketReady(nsresult condition); @@ -86,7 +87,7 @@ private: nsresult mCondition; nsCOMPtr mCallback; PRUint32 mCallbackFlags; - PRUint32 mByteCount; + nsUint64 mByteCount; }; //----------------------------------------------------------------------------- @@ -103,7 +104,7 @@ public: PRBool IsReferenced() { return mWriterRefCnt > 0; } nsresult Condition() { return mCondition; } - PRUint32 ByteCount() { return mByteCount; } + PRUint64 ByteCount() { return mByteCount; } // called by the socket transport on the socket thread... void OnSocketReady(nsresult condition); @@ -120,7 +121,7 @@ private: nsresult mCondition; nsCOMPtr mCallback; PRUint32 mCallbackFlags; - PRUint32 mByteCount; + nsUint64 mByteCount; }; //----------------------------------------------------------------------------- diff --git a/mozilla/netwerk/base/src/nsStreamTransportService.cpp b/mozilla/netwerk/base/src/nsStreamTransportService.cpp index c4fd7cd5048..327b242abb7 100644 --- a/mozilla/netwerk/base/src/nsStreamTransportService.cpp +++ b/mozilla/netwerk/base/src/nsStreamTransportService.cpp @@ -38,6 +38,7 @@ #include "nsStreamTransportService.h" #include "nsNetSegmentUtils.h" #include "nsAutoLock.h" +#include "nsInt64.h" #include "nsTransportUtils.h" #include "nsStreamUtils.h" #include "nsNetError.h" @@ -70,8 +71,8 @@ public: NS_DECL_NSIINPUTSTREAM nsInputStreamTransport(nsIInputStream *source, - PRUint32 offset, - PRUint32 limit, + PRUint64 offset, + PRUint64 limit, PRBool closeWhenDone) : mSource(source) , mOffset(offset) @@ -93,8 +94,8 @@ private: // nsIInputStream implementation. nsCOMPtr mEventSink; nsCOMPtr mSource; - PRUint32 mOffset; - PRUint32 mLimit; + nsUint64 mOffset; + nsUint64 mLimit; PRPackedBool mCloseWhenDone; PRPackedBool mFirstTime; @@ -207,12 +208,14 @@ nsInputStreamTransport::Read(char *buf, PRUint32 count, PRUint32 *result) { if (mFirstTime) { mFirstTime = PR_FALSE; - if (mOffset) { + if (mOffset == nsUint64(0)) { // read from current position if offset equal to max - if (mOffset != PR_UINT32_MAX) { + if (mOffset != LL_MAXUINT) { nsCOMPtr seekable = do_QueryInterface(mSource); + // Note: The casts to PRUint64 are needed to cast to PRInt64, as + // nsUint64 can't directly be cast to PRInt64 if (seekable) - seekable->Seek(nsISeekableStream::NS_SEEK_SET, mOffset); + seekable->Seek(nsISeekableStream::NS_SEEK_SET, PRUint64(mOffset)); } // reset offset to zero so we can use it to enforce limit mOffset = 0; @@ -270,8 +273,8 @@ public: NS_DECL_NSIOUTPUTSTREAM nsOutputStreamTransport(nsIOutputStream *sink, - PRUint32 offset, - PRUint32 limit, + PRUint64 offset, + PRUint64 limit, PRBool closeWhenDone) : mSink(sink) , mOffset(offset) @@ -293,8 +296,8 @@ private: // nsIOutputStream implementation. nsCOMPtr mEventSink; nsCOMPtr mSink; - PRUint32 mOffset; - PRUint32 mLimit; + nsUint64 mOffset; + nsUint64 mLimit; PRPackedBool mCloseWhenDone; PRPackedBool mFirstTime; @@ -407,12 +410,14 @@ nsOutputStreamTransport::Write(const char *buf, PRUint32 count, PRUint32 *result { if (mFirstTime) { mFirstTime = PR_FALSE; - if (mOffset) { + if (!!mOffset) { // write to current position if offset equal to max - if (mOffset != PR_UINT32_MAX) { + if (mOffset != LL_MAXUINT) { nsCOMPtr seekable = do_QueryInterface(mSink); + // Note: The casts to PRUint64 are needed to cast to PRInt64, as + // nsUint64 can't directly be cast to PRInt64 if (seekable) - seekable->Seek(nsISeekableStream::NS_SEEK_SET, mOffset); + seekable->Seek(nsISeekableStream::NS_SEEK_SET, PRUint64(mOffset)); } // reset offset to zero so we can use it to enforce limit mOffset = 0; @@ -467,8 +472,8 @@ NS_IMPL_THREADSAFE_ISUPPORTS1(nsStreamTransportService, nsIStreamTransportServic NS_IMETHODIMP nsStreamTransportService::CreateInputTransport(nsIInputStream *stream, - PRInt32 offset, - PRInt32 limit, + PRInt64 offset, + PRInt64 limit, PRBool closeWhenDone, nsITransport **result) { @@ -482,8 +487,8 @@ nsStreamTransportService::CreateInputTransport(nsIInputStream *stream, NS_IMETHODIMP nsStreamTransportService::CreateOutputTransport(nsIOutputStream *stream, - PRInt32 offset, - PRInt32 limit, + PRInt64 offset, + PRInt64 limit, PRBool closeWhenDone, nsITransport **result) { diff --git a/mozilla/netwerk/base/src/nsTransportUtils.cpp b/mozilla/netwerk/base/src/nsTransportUtils.cpp index dee17ba69b3..fb325b048a9 100644 --- a/mozilla/netwerk/base/src/nsTransportUtils.cpp +++ b/mozilla/netwerk/base/src/nsTransportUtils.cpp @@ -87,8 +87,8 @@ public: nsTransportStatusEvent(nsTransportEventSinkProxy *proxy, nsITransport *transport, nsresult status, - PRUint32 progress, - PRUint32 progressMax) + PRUint64 progress, + PRUint64 progressMax) : mTransport(transport) , mStatus(status) , mProgress(progress) @@ -133,8 +133,8 @@ public: // parameters to OnTransportStatus nsCOMPtr mTransport; nsresult mStatus; - PRUint32 mProgress; - PRUint32 mProgressMax; + PRUint64 mProgress; + PRUint64 mProgressMax; }; NS_IMPL_THREADSAFE_ISUPPORTS1(nsTransportEventSinkProxy, nsITransportEventSink) @@ -142,8 +142,8 @@ NS_IMPL_THREADSAFE_ISUPPORTS1(nsTransportEventSinkProxy, nsITransportEventSink) NS_IMETHODIMP nsTransportEventSinkProxy::OnTransportStatus(nsITransport *transport, nsresult status, - PRUint32 progress, - PRUint32 progressMax) + PRUint64 progress, + PRUint64 progressMax) { nsresult rv = NS_OK; PLEvent *event; diff --git a/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp b/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp index c8055763506..a20f4f788d3 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp +++ b/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp @@ -41,6 +41,7 @@ #include "nsIServiceManager.h" #include "nsIEventQueueService.h" #include "nsNetUtil.h" +#include "nsInt64.h" #include "nsILoadGroup.h" #include "plbase64.h" #include "prmem.h" @@ -348,7 +349,7 @@ nsDataChannel::AsyncOpen(nsIStreamListener *aListener, nsISupports *ctxt) mListener = aListener; mOpened = PR_TRUE; - nsresult rv = mPump->Init(mDataStream, -1, -1, 0, 0, PR_FALSE); + nsresult rv = mPump->Init(mDataStream, nsInt64(-1), nsInt64(-1), 0, 0, PR_FALSE); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp b/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp index 9f029943a89..a9fb173f611 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp +++ b/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp @@ -398,8 +398,11 @@ nsFileChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctx) // // create asynchronous output stream wrapping file output stream. // + // XXX 64-bit upload length would be nice; it would require a new + // nsIUploadChannel, though. nsCOMPtr transport; - rv = sts->CreateOutputTransport(fileOut, -1, mUploadLength, PR_TRUE, + rv = sts->CreateOutputTransport(fileOut, nsInt64(-1), + nsInt64(mUploadLength), PR_TRUE, getter_AddRefs(transport)); if (NS_FAILED(rv)) return rv; @@ -439,7 +442,7 @@ nsFileChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctx) // create asynchronous input stream wrapping file input stream. // nsCOMPtr transport; - rv = sts->CreateInputTransport(mStream, -1, -1, PR_TRUE, + rv = sts->CreateInputTransport(mStream, nsInt64(-1), nsInt64(-1), PR_TRUE, getter_AddRefs(transport)); if (NS_FAILED(rv)) return rv; @@ -563,7 +566,7 @@ nsFileChannel::OnDataAvailable(nsIRequest *req, nsISupports *ctx, NS_IMETHODIMP nsFileChannel::OnTransportStatus(nsITransport *trans, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { // suppress status notification if channel is no longer pending! if (mProgressSink && NS_SUCCEEDED(mStatus) && mRequest && !(mLoadFlags & LOAD_BACKGROUND)) { diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp index 7eeb19afb8c..740206a3a52 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp @@ -376,7 +376,7 @@ nsFTPChannel::AsyncOpenAt(nsIStreamListener *listener, nsISupports *ctxt, } nsresult -nsFTPChannel::SetupState(PRUint32 startPos, const nsACString& entityID) +nsFTPChannel::SetupState(PRUint64 startPos, const nsACString& entityID) { nsCOMPtr prompt; nsCOMPtr authPrompt; @@ -565,7 +565,7 @@ nsFTPChannel::OnStatus(nsIRequest *request, nsISupports *aContext, NS_IMETHODIMP nsFTPChannel::OnProgress(nsIRequest *request, nsISupports* aContext, - PRUint32 aProgress, PRUint32 aProgressMax) + PRUint64 aProgress, PRUint64 aProgressMax) { if (!mEventSink || (mLoadFlags & LOAD_BACKGROUND) || !mIsPending) return NS_OK; diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h index 99634076643..6c18fb8d702 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h @@ -103,7 +103,7 @@ public: nsIProxyInfo* proxyInfo, nsICacheSession* session); - nsresult SetupState(PRUint32 startPos, const nsACString& entityID); + nsresult SetupState(PRUint64 startPos, const nsACString& entityID); nsresult GenerateCacheKey(nsACString &cacheKey); nsresult AsyncOpenAt(nsIStreamListener *listener, nsISupports *ctxt, diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp index 3c3407bef7c..cd800f3b1d8 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp @@ -114,7 +114,7 @@ NS_IMPL_ISUPPORTS1(TransportEventForwarder, nsITransportEventSink) NS_IMETHODIMP TransportEventForwarder::OnTransportStatus(nsITransport *transport, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { // We only want to forward the resolving and connecting states of the // control connection and report the data connection for the rest of the @@ -156,7 +156,7 @@ public: NS_FORWARD_NSICHANNEL(mFTPChannel->) NS_FORWARD_NSIFTPCHANNEL(mFTPChannel->) - PRUint32 GetBytesTransfered() {return mBytesTransfered;} + PRUint64 GetBytesTransfered() {return mBytesTransfered;} void Uploading(PRBool value, PRUint32 uploadCount); void SetRetrying(PRBool retry); @@ -169,8 +169,8 @@ protected: nsCOMPtr mCacheEntry; nsCString mEntityID; - PRUint32 mBytesTransfered; - PRUint32 mBytesToUpload; + nsUint64 mBytesTransfered; + nsUint64 mBytesToUpload; PRPackedBool mDelayedOnStartFired; PRPackedBool mUploading; PRPackedBool mRetrying; @@ -369,6 +369,7 @@ DataRequestForwarder::OnDataAvailable(nsIRequest *request, nsISupports *ctxt, ns if (NS_FAILED(rv)) return rv; } + // XXX mBytesTransfered will get truncated from 64-bit to 32-bit rv = mListener->OnDataAvailable(this, ctxt, input, mBytesTransfered, count); if (NS_SUCCEEDED(rv)) mBytesTransfered += count; @@ -378,7 +379,7 @@ DataRequestForwarder::OnDataAvailable(nsIRequest *request, nsISupports *ctxt, ns // nsITransportEventSink methods NS_IMETHODIMP DataRequestForwarder::OnTransportStatus(nsITransport *transport, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { if (mEventSink) { mEventSink->OnStatus(nsnull, nsnull, status, nsnull); @@ -386,8 +387,8 @@ DataRequestForwarder::OnTransportStatus(nsITransport *transport, nsresult status if (status == nsISocketTransport::STATUS_RECEIVING_FROM || status == nsISocketTransport::STATUS_SENDING_TO) { // compute progress based on whether we are uploading or receiving... - PRUint32 count = mUploading ? progress : mBytesTransfered; - PRUint32 max = mUploading ? mBytesToUpload : progressMax; + PRUint64 count = mUploading ? progress : PRUint64(mBytesTransfered); + PRUint64 max = mUploading ? PRUint64(mBytesToUpload) : progressMax; mEventSink->OnProgress(this, nsnull, count, max); } } @@ -427,7 +428,7 @@ nsFtpState::nsFtpState() mControlConnection = nsnull; mDRequestForwarder = nsnull; - mFileSize = LL_MaxUint(); + mFileSize = LL_MAXUINT; // make sure handler stays around NS_ADDREF(gFtpHandler); @@ -1438,7 +1439,7 @@ nsFtpState::R_mdtm() { } // We weren't asked to resume - if (mStartPos == PRUint32(-1)) + if (mStartPos == LL_MAXUINT) return FTP_S_RETR; //if (our entityID == supplied one (if any)) @@ -1497,9 +1498,9 @@ nsFtpState::S_list() { // dir listings aren't resumable NS_ASSERTION(mSuppliedEntityID.IsEmpty(), "Entity ID given to directory request"); - NS_ASSERTION(mStartPos == PRUint32(-1) || mStartPos == 0, + NS_ASSERTION(mStartPos == LL_MAXUINT || mStartPos == nsUint64(0), "Non-initial start position given to directory request"); - if (!mSuppliedEntityID.IsEmpty() || (mStartPos != PRUint32(-1) && mStartPos != 0)) { + if (!mSuppliedEntityID.IsEmpty() || (mStartPos != LL_MAXUINT && mStartPos != nsUint64(0))) { // If we reach this code, then the caller is in error return NS_ERROR_NOT_RESUMABLE; } @@ -1596,7 +1597,8 @@ nsresult nsFtpState::S_rest() { nsCAutoString restString("REST "); - restString.AppendInt(mStartPos, 10); + // The PRInt64 cast is needed to avoid ambiguity + restString.AppendInt(PRInt64(PRUint64(mStartPos)), 10); restString.Append(CRLF); return SendFTPCommand(restString); @@ -1913,7 +1915,8 @@ nsFtpState::R_pasv() { // pump data to the request forwarder... nsCOMPtr pump; - rv = NS_NewInputStreamPump(getter_AddRefs(pump), input, -1, -1, 0, 0, PR_TRUE); + rv = NS_NewInputStreamPump(getter_AddRefs(pump), input, nsInt64(-1), + nsInt64(-1), 0, 0, PR_TRUE); if (NS_FAILED(rv)) { LOG(("(%x) NS_NewInputStreamPump failed (rv=%x)\n", this, rv)); return FTP_ERROR; @@ -2159,7 +2162,7 @@ nsFtpState::Init(nsIFTPChannel* aChannel, nsIFTPEventSink* sink, nsICacheEntryDescriptor* cacheEntry, nsIProxyInfo* proxyInfo, - PRUint32 startPos, + PRUint64 startPos, const nsACString& entity) { // Build a proxy for the FTP event sink since we may need to call diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h index 583a93caea3..65696a7a90c 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h @@ -40,6 +40,7 @@ #define __nsFtpState__h_ #include "ftpCore.h" +#include "nsInt64.h" #include "nsIThread.h" #include "nsIRunnable.h" #include "nsISocketTransportService.h" @@ -121,7 +122,7 @@ public: nsIFTPEventSink *sink, nsICacheEntryDescriptor* cacheEntry, nsIProxyInfo* proxyInfo, - PRUint32 startPos, + PRUint64 startPos, const nsACString& entity); // use this to provide a stream to be written to the server. @@ -240,7 +241,7 @@ private: nsCOMPtr mCacheEntry; - PRUint32 mStartPos; + nsUint64 mStartPos; nsCString mSuppliedEntityID; nsCString mEntityID; }; diff --git a/mozilla/netwerk/protocol/gopher/src/nsGopherChannel.cpp b/mozilla/netwerk/protocol/gopher/src/nsGopherChannel.cpp index 83eb3afad85..309331cd18c 100644 --- a/mozilla/netwerk/protocol/gopher/src/nsGopherChannel.cpp +++ b/mozilla/netwerk/protocol/gopher/src/nsGopherChannel.cpp @@ -718,11 +718,11 @@ nsGopherChannel::PushStreamConverters(nsIStreamListener *listener, nsIStreamList NS_IMETHODIMP nsGopherChannel::OnTransportStatus(nsITransport *trans, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { // suppress status notification if channel is no longer pending! if (mProgressSink && NS_SUCCEEDED(mStatus) && mPump && !(mLoadFlags & LOAD_BACKGROUND)) { - NS_ConvertUTF8toUCS2 host(mHost); + NS_ConvertUTF8toUTF16 host(mHost); mProgressSink->OnStatus(this, nsnull, status, host.get()); if (status == nsISocketTransport::STATUS_RECEIVING_FROM || diff --git a/mozilla/netwerk/protocol/http/src/nsAHttpTransaction.h b/mozilla/netwerk/protocol/http/src/nsAHttpTransaction.h index 15e6ba7a6d4..9ec6078a921 100644 --- a/mozilla/netwerk/protocol/http/src/nsAHttpTransaction.h +++ b/mozilla/netwerk/protocol/http/src/nsAHttpTransaction.h @@ -65,7 +65,7 @@ public: virtual void GetSecurityCallbacks(nsIInterfaceRequestor **) = 0; // called to report socket status (see nsITransportEventSink) - virtual void OnTransportStatus(nsresult status, PRUint32 progress) = 0; + virtual void OnTransportStatus(nsresult status, PRUint64 progress) = 0; // called to check the transaction status. virtual PRBool IsDone() = 0; @@ -89,7 +89,7 @@ public: #define NS_DECL_NSAHTTPTRANSACTION \ void SetConnection(nsAHttpConnection *); \ void GetSecurityCallbacks(nsIInterfaceRequestor **); \ - void OnTransportStatus(nsresult status, PRUint32 progress); \ + void OnTransportStatus(nsresult status, PRUint64 progress); \ PRBool IsDone(); \ nsresult Status(); \ PRUint32 Available(); \ diff --git a/mozilla/netwerk/protocol/http/src/nsHttpChannel.cpp b/mozilla/netwerk/protocol/http/src/nsHttpChannel.cpp index 7fb96a67021..61d18230da1 100644 --- a/mozilla/netwerk/protocol/http/src/nsHttpChannel.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHttpChannel.cpp @@ -1568,7 +1568,8 @@ nsHttpChannel::ReadFromCache() if (NS_FAILED(rv)) return rv; rv = NS_NewInputStreamPump(getter_AddRefs(mCachePump), - stream, -1, -1, 0, 0, PR_TRUE); + stream, nsInt64(-1), nsInt64(-1), 0, 0, + PR_TRUE); if (NS_FAILED(rv)) return rv; return mCachePump->AsyncRead(this, mListenerContext); @@ -3857,11 +3858,11 @@ nsHttpChannel::OnDataAvailable(nsIRequest *request, nsISupports *ctxt, NS_IMETHODIMP nsHttpChannel::OnTransportStatus(nsITransport *trans, nsresult status, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { // block socket status event after Cancel or OnStopRequest has been called. if (mProgressSink && NS_SUCCEEDED(mStatus) && mIsPending && !(mLoadFlags & LOAD_BACKGROUND)) { - LOG(("sending status notification [this=%x status=%x progress=%u/%u]\n", + LOG(("sending status notification [this=%x status=%x progress=%llu/%llu]\n", this, status, progress, progressMax)); NS_ConvertASCIItoUCS2 host(mConnectionInfo->Host()); diff --git a/mozilla/netwerk/protocol/http/src/nsHttpConnection.cpp b/mozilla/netwerk/protocol/http/src/nsHttpConnection.cpp index 3d07bd49af8..be5af498da8 100644 --- a/mozilla/netwerk/protocol/http/src/nsHttpConnection.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHttpConnection.cpp @@ -579,7 +579,8 @@ nsHttpConnection::OnSocketWritable() // here to reflect the fact that we are waiting. this message will be // trumped (overwritten) if the server responds quickly. // - mTransaction->OnTransportStatus(nsISocketTransport::STATUS_WAITING_FOR, 0); + mTransaction->OnTransportStatus(nsISocketTransport::STATUS_WAITING_FOR, + LL_ZERO); rv = mSocketIn->AsyncWait(this, 0, 0, nsnull); // start reading again = PR_FALSE; @@ -770,8 +771,8 @@ nsHttpConnection::OnOutputStreamReady(nsIAsyncOutputStream *out) NS_IMETHODIMP nsHttpConnection::OnTransportStatus(nsITransport *trans, nsresult status, - PRUint32 progress, - PRUint32 progressMax) + PRUint64 progress, + PRUint64 progressMax) { if (mTransaction) mTransaction->OnTransportStatus(status, progress); diff --git a/mozilla/netwerk/protocol/http/src/nsHttpPipeline.cpp b/mozilla/netwerk/protocol/http/src/nsHttpPipeline.cpp index 3f7d22cd86b..7cfc675a49b 100644 --- a/mozilla/netwerk/protocol/http/src/nsHttpPipeline.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHttpPipeline.cpp @@ -323,9 +323,9 @@ nsHttpPipeline::GetSecurityCallbacks(nsIInterfaceRequestor **result) } void -nsHttpPipeline::OnTransportStatus(nsresult status, PRUint32 progress) +nsHttpPipeline::OnTransportStatus(nsresult status, PRUint64 progress) { - LOG(("nsHttpPipeline::OnStatus [this=%x status=%x progress=%u]\n", + LOG(("nsHttpPipeline::OnStatus [this=%x status=%x progress=%llu]\n", this, status, progress)); NS_ASSERTION(PR_GetCurrentThread() == gSocketThread, "wrong thread"); diff --git a/mozilla/netwerk/protocol/http/src/nsHttpTransaction.cpp b/mozilla/netwerk/protocol/http/src/nsHttpTransaction.cpp index dff8087f00f..8ad5dd8a791 100644 --- a/mozilla/netwerk/protocol/http/src/nsHttpTransaction.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHttpTransaction.cpp @@ -286,9 +286,9 @@ nsHttpTransaction::GetSecurityCallbacks(nsIInterfaceRequestor **cb) } void -nsHttpTransaction::OnTransportStatus(nsresult status, PRUint32 progress) +nsHttpTransaction::OnTransportStatus(nsresult status, PRUint64 progress) { - LOG(("nsHttpTransaction::OnSocketStatus [this=%x status=%x progress=%u]\n", + LOG(("nsHttpTransaction::OnSocketStatus [this=%x status=%x progress=%llu]\n", this, status, progress)); if (!mTransportSink) @@ -300,7 +300,7 @@ nsHttpTransaction::OnTransportStatus(nsresult status, PRUint32 progress) if (status == nsISocketTransport::STATUS_RECEIVING_FROM) return; - PRUint32 progressMax; + nsUint64 progressMax; if (status == nsISocketTransport::STATUS_SENDING_TO) { // suppress progress when only writing request headers @@ -309,10 +309,10 @@ nsHttpTransaction::OnTransportStatus(nsresult status, PRUint32 progress) // when uploading, we include the request headers in the progress // notifications. - progressMax = mRequestSize; + progressMax = mRequestSize; // XXX mRequestSize is 32-bit! } else { - progress = 0; + progress = LL_ZERO; progressMax = 0; } @@ -833,7 +833,7 @@ nsHttpTransaction::HandleContent(char *buf, if (*contentRead) { // update count of content bytes read and report progress... mContentRead += *contentRead; - /* + /* when uncommenting, take care of 64-bit integers w/ PR_MAX... if (mProgressSink) mProgressSink->OnProgress(nsnull, nsnull, mContentRead, PR_MAX(0, mContentLength)); */ diff --git a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp index 667f4656b75..87d76ecc862 100644 --- a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp +++ b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp @@ -37,6 +37,7 @@ #include "nsMultiMixedConv.h" #include "nsMemory.h" +#include "nsInt64.h" #include "plstr.h" #include "nsIHttpChannel.h" #include "nsIServiceManager.h" @@ -80,7 +81,7 @@ class nsPartChannel : public nsIChannel, public: nsPartChannel(nsIChannel *aMultipartChannel); - void InitializeByteRange(PRInt32 aStart, PRInt32 aEnd); + void InitializeByteRange(PRInt64 aStart, PRInt64 aEnd); NS_DECL_ISUPPORTS NS_DECL_NSIREQUEST @@ -102,16 +103,16 @@ protected: nsCString mContentType; nsCString mContentCharset; nsCString mContentDisposition; - PRInt32 mContentLength; + nsUint64 mContentLength; PRBool mIsByteRangeRequest; - PRInt32 mByteRangeStart; - PRInt32 mByteRangeEnd; + nsInt64 mByteRangeStart; + nsInt64 mByteRangeEnd; }; nsPartChannel::nsPartChannel(nsIChannel *aMultipartChannel) : mStatus(NS_OK), - mContentLength(-1), + mContentLength(LL_MAXUINT), mIsByteRangeRequest(PR_FALSE), mByteRangeStart(0), mByteRangeEnd(0) @@ -128,7 +129,7 @@ nsPartChannel::~nsPartChannel() { } -void nsPartChannel::InitializeByteRange(PRInt32 aStart, PRInt32 aEnd) +void nsPartChannel::InitializeByteRange(PRInt64 aStart, PRInt64 aEnd) { mIsByteRangeRequest = PR_TRUE; @@ -341,7 +342,7 @@ nsPartChannel::SetContentCharset(const nsACString &aContentCharset) NS_IMETHODIMP nsPartChannel::GetContentLength(PRInt32 *aContentLength) { - *aContentLength = mContentLength; + *aContentLength = mContentLength; // XXX truncates 64-bit value return NS_OK; } @@ -380,7 +381,7 @@ nsPartChannel::GetIsByteRangeRequest(PRBool *aIsByteRangeRequest) NS_IMETHODIMP -nsPartChannel::GetStartRange(PRInt32 *aStartRange) +nsPartChannel::GetStartRange(PRInt64 *aStartRange) { *aStartRange = mByteRangeStart; @@ -388,7 +389,7 @@ nsPartChannel::GetStartRange(PRInt32 *aStartRange) } NS_IMETHODIMP -nsPartChannel::GetEndRange(PRInt32 *aEndRange) +nsPartChannel::GetEndRange(PRInt64 *aEndRange) { *aEndRange = mByteRangeEnd; return NS_OK; @@ -576,7 +577,7 @@ nsMultiMixedConv::OnDataAvailable(nsIRequest *request, nsISupports *context, mNewPart = PR_TRUE; // Reset state so we don't carry it over from part to part mContentType.Truncate(); - mContentLength = -1; + mContentLength = LL_MAXUINT; mContentDisposition.Truncate(); mIsByteRangeRequest = PR_FALSE; mByteRangeStart = 0; @@ -719,7 +720,7 @@ nsMultiMixedConv::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsMultiMixedConv::nsMultiMixedConv() { mTokenLen = 0; mNewPart = PR_TRUE; - mContentLength = -1; + mContentLength = LL_MAXUINT; mBuffer = nsnull; mBufLen = 0; mProcessingHeaders = PR_FALSE; @@ -779,7 +780,7 @@ nsMultiMixedConv::SendStart(nsIChannel *aChannel) { rv = mPartChannel->SetContentType(mContentType); if (NS_FAILED(rv)) return rv; - rv = mPartChannel->SetContentLength(mContentLength); + rv = mPartChannel->SetContentLength(mContentLength); // XXX Truncates 64-bit! if (NS_FAILED(rv)) return rv; nsCOMPtr partChannel(do_QueryInterface(mPartChannel)); @@ -835,10 +836,10 @@ nsMultiMixedConv::SendData(char *aBuffer, PRUint32 aLen) { if (!mPartChannel) return NS_ERROR_FAILURE; // something went wrong w/ processing - if (mContentLength != -1) { + if (mContentLength != LL_MAXUINT) { // make sure that we don't send more than the mContentLength // XXX why? perhaps the Content-Length header was actually wrong!! - if ((aLen + mTotalSent) > PRUint32(mContentLength)) + if ((nsUint64(aLen) + mTotalSent) > mContentLength) aLen = mContentLength - mTotalSent; if (aLen == 0) @@ -887,7 +888,7 @@ nsMultiMixedConv::ParseHeaders(nsIChannel *aChannel, char *&aPtr, PRBool done = PR_FALSE; PRUint32 lineFeedIncrement = 1; - mContentLength = -1; // XXX what if we were already called? + mContentLength = LL_MAXUINT; // XXX what if we were already called? while (cursorLen && (newLine = (char *) memchr(cursor, nsCRT::LF, cursorLen))) { // adjust for linefeeds if ((newLine > cursor) && (newLine[-1] == nsCRT::CR) ) { // CRLF @@ -924,7 +925,7 @@ nsMultiMixedConv::ParseHeaders(nsIChannel *aChannel, char *&aPtr, if (headerStr.LowerCaseEqualsLiteral("content-type")) { mContentType = headerVal; } else if (headerStr.LowerCaseEqualsLiteral("content-length")) { - mContentLength = atoi(headerVal.get()); + mContentLength = atoi(headerVal.get()); // XXX 64-bit math? } else if (headerStr.LowerCaseEqualsLiteral("content-disposition")) { mContentDisposition = headerVal; } else if (headerStr.LowerCaseEqualsLiteral("set-cookie")) { @@ -958,14 +959,14 @@ nsMultiMixedConv::ParseHeaders(nsIChannel *aChannel, char *&aPtr, tmpPtr[0] = '\0'; - mByteRangeStart = atoi(range); + mByteRangeStart = atoi(range); // XXX want 64-bit conv tmpPtr++; mByteRangeEnd = atoi(tmpPtr); } mIsByteRangeRequest = PR_TRUE; - if (mContentLength == -1) - mContentLength = mByteRangeEnd - mByteRangeStart + 1; + if (mContentLength == LL_MAXUINT) + mContentLength = PRUint64(PRInt64(mByteRangeEnd - mByteRangeStart + nsInt64(1))); } } *newLine = tmpChar; diff --git a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.h b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.h index 8b9d505f47d..a9525a30b5f 100644 --- a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.h +++ b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.h @@ -43,6 +43,7 @@ #include "nsString.h" #include "nsXPIDLString.h" #include "nsCOMPtr.h" +#include "nsInt64.h" #include "nsIByteRangeRequest.h" #define NS_MULTIMIXEDCONVERTER_CID \ @@ -123,18 +124,18 @@ protected: nsCOMPtr mContext; nsCString mContentType; nsCString mContentDisposition; - PRInt32 mContentLength; + nsUint64 mContentLength; char *mBuffer; PRUint32 mBufLen; - PRUint32 mTotalSent; + nsUint64 mTotalSent; PRBool mFirstOnData; // used to determine if we're in our first OnData callback. // The following members are for tracking the byte ranges in // multipart/mixed content which specified the 'Content-Range:' // header... - PRInt32 mByteRangeStart; - PRInt32 mByteRangeEnd; + nsInt64 mByteRangeStart; + nsInt64 mByteRangeEnd; PRBool mIsByteRangeRequest; }; diff --git a/mozilla/netwerk/test/TestFileTransport.cpp b/mozilla/netwerk/test/TestFileTransport.cpp index d4cceeb2641..4d9dec8f7c0 100644 --- a/mozilla/netwerk/test/TestFileTransport.cpp +++ b/mozilla/netwerk/test/TestFileTransport.cpp @@ -85,8 +85,8 @@ public: MyProgressEventSink() { } NS_IMETHOD OnProgress(nsIRequest *request, nsISupports *ctxt, - PRUint32 progress, PRUint32 progressMax) { - PRINTF(("progress: %u/%u\n", progress, progressMax)); + PRUint64 progress, PRUint64 progressMax) { + PRINTF(("progress: %llu/%llu\n", progress, progressMax)); return NS_OK; } diff --git a/mozilla/netwerk/test/TestHttp.cpp b/mozilla/netwerk/test/TestHttp.cpp index 5dc726bcf22..a4b2982ad67 100644 --- a/mozilla/netwerk/test/TestHttp.cpp +++ b/mozilla/netwerk/test/TestHttp.cpp @@ -115,9 +115,9 @@ MyNotifications::OnStatus(nsIRequest *req, nsISupports *ctx, NS_IMETHODIMP MyNotifications::OnProgress(nsIRequest *req, nsISupports *ctx, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { - printf("progress: %u/%u\n", progress, progressMax); + printf("progress: %llu/%llu\n", progress, progressMax); return NS_OK; } diff --git a/mozilla/netwerk/test/TestPageLoad.cpp b/mozilla/netwerk/test/TestPageLoad.cpp index 22525453c0e..f0c55dd53b0 100644 --- a/mozilla/netwerk/test/TestPageLoad.cpp +++ b/mozilla/netwerk/test/TestPageLoad.cpp @@ -255,9 +255,11 @@ MyNotifications::OnStatus(nsIRequest *req, nsISupports *ctx, NS_IMETHODIMP MyNotifications::OnProgress(nsIRequest *req, nsISupports *ctx, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { - //printf("progress: %u/%u\n", progress, progressMax); + // char buf[100]; + // PR_snprintf(buf, sizeof(buf), "%llu/%llu\n", progress, progressMax); + // printf("%s", buf); return NS_OK; } diff --git a/mozilla/netwerk/test/TestStreamChannel.cpp b/mozilla/netwerk/test/TestStreamChannel.cpp index 56ec7fef554..ef0cb791070 100644 --- a/mozilla/netwerk/test/TestStreamChannel.cpp +++ b/mozilla/netwerk/test/TestStreamChannel.cpp @@ -184,9 +184,9 @@ public: } NS_IMETHOD OnProgress(nsIRequest *req, nsISupports *ctx, - PRUint32 progress, PRUint32 progressMax) + PRUint64 progress, PRUint64 progressMax) { - LOG(("MyCallbacks::OnProgress [progress=%u/%u]\n", progress, progressMax)); + LOG(("MyCallbacks::OnProgress [progress=%llu/%llu]\n", progress, progressMax)); return NS_OK; } }; diff --git a/mozilla/netwerk/test/TestStreamPump.cpp b/mozilla/netwerk/test/TestStreamPump.cpp index 9c36f0db82d..b90da2b142e 100644 --- a/mozilla/netwerk/test/TestStreamPump.cpp +++ b/mozilla/netwerk/test/TestStreamPump.cpp @@ -58,6 +58,7 @@ #include "nsNetUtil.h" #include "nsAutoLock.h" #include "prlog.h" +#include "prprf.h" //////////////////////////////////////////////////////////////////////////////// @@ -169,7 +170,7 @@ NS_IMPL_ISUPPORTS2(MyListener, * asynchronously copy file. */ static nsresult -RunTest(nsIFile *file, PRInt32 offset, PRInt32 length) +RunTest(nsIFile *file, PRInt64 offset, PRInt64 length) { nsresult rv; @@ -213,8 +214,18 @@ main(int argc, char* argv[]) return -1; } char* fileName = argv[1]; - PRInt32 offset = atoi(argv[2]); - PRInt32 length = atoi(argv[3]); + PRInt64 offset, length; + int err = PR_sscanf(argv[2], "%lld", &offset); + if (err == -1) { + printf("Start offset must be an integer!\n"); + return 1; + } + err = PR_sscanf(argv[3], "%lld", &length); + if (err == -1) { + printf("Length must be an integer!\n"); + return 1; + } + { nsCOMPtr servMan; NS_InitXPCOM2(getter_AddRefs(servMan), nsnull, nsnull); diff --git a/mozilla/netwerk/test/TestStreamTransport.cpp b/mozilla/netwerk/test/TestStreamTransport.cpp index c21996320d5..1b8ccbab996 100644 --- a/mozilla/netwerk/test/TestStreamTransport.cpp +++ b/mozilla/netwerk/test/TestStreamTransport.cpp @@ -260,11 +260,13 @@ RunTest(nsIFile *srcFile, nsIFile *destFile) if (NS_FAILED(rv)) return rv; nsCOMPtr srcTransport; - rv = sts->CreateInputTransport(srcStr, -1, -1, PR_TRUE, getter_AddRefs(srcTransport)); + rv = sts->CreateInputTransport(srcStr, nsInt64(-1), nsInt64(-1), PR_TRUE, + getter_AddRefs(srcTransport)); if (NS_FAILED(rv)) return rv; nsCOMPtr destTransport; - rv = sts->CreateOutputTransport(destStr, -1, -1, PR_TRUE, getter_AddRefs(destTransport)); + rv = sts->CreateOutputTransport(destStr, nsInt64(-1), nsInt64(-1), PR_TRUE, + getter_AddRefs(destTransport)); if (NS_FAILED(rv)) return rv; MyCopier *copier = new MyCopier(); @@ -311,7 +313,8 @@ RunBlockingTest(nsIFile *srcFile, nsIFile *destFile) if (NS_FAILED(rv)) return rv; nsCOMPtr destTransport; - rv = sts->CreateOutputTransport(fileOut, -1, -1, PR_TRUE, getter_AddRefs(destTransport)); + rv = sts->CreateOutputTransport(fileOut, nsInt64(-1), nsInt64(-1), + PR_TRUE, getter_AddRefs(destTransport)); if (NS_FAILED(rv)) return rv; nsCOMPtr destOut; diff --git a/mozilla/toolkit/components/downloads/src/nsDownloadManager.cpp b/mozilla/toolkit/components/downloads/src/nsDownloadManager.cpp index 6d3881e4b75..c2c8a21a376 100644 --- a/mozilla/toolkit/components/downloads/src/nsDownloadManager.cpp +++ b/mozilla/toolkit/components/downloads/src/nsDownloadManager.cpp @@ -1537,11 +1537,13 @@ nsXPIProgressListener::OnStateChange(PRUint32 aIndex, PRInt16 aState, PRInt32 aV } NS_IMETHODIMP -nsXPIProgressListener::OnProgress(PRUint32 aIndex, PRUint32 aValue, PRUint32 aMaxValue) +nsXPIProgressListener::OnProgress(PRUint32 aIndex, PRUint64 aValue, PRUint64 aMaxValue) { nsCOMPtr wpl(do_QueryElementAt(mDownloads, aIndex)); + // XXX truncates 64-bit to 32 bit if (wpl) - return wpl->OnProgressChange(nsnull, nsnull, 0, 0, aValue, aMaxValue); + return wpl->OnProgressChange(nsnull, nsnull, 0, 0, nsUint64(aValue), + nsUint64(aMaxValue)); return NS_OK; } diff --git a/mozilla/uriloader/base/nsDocLoader.cpp b/mozilla/uriloader/base/nsDocLoader.cpp index ed3edae73f7..481ca50b03c 100644 --- a/mozilla/uriloader/base/nsDocLoader.cpp +++ b/mozilla/uriloader/base/nsDocLoader.cpp @@ -99,8 +99,8 @@ struct nsRequestInfo : public PLDHashEntryHdr } const void* mKey; // Must be first for the pldhash stubs to work - PRInt32 mCurrentProgress; - PRInt32 mMaxProgress; + nsInt64 mCurrentProgress; + nsInt64 mMaxProgress; PRBool mUploading; }; @@ -551,10 +551,9 @@ nsDocLoader::OnStopRequest(nsIRequest *aRequest, // this will allow a more accurate estimation of the max progress (in case // the old value was unknown ie. -1) // - nsRequestInfo *info; - info = GetRequestInfo(aRequest); + nsRequestInfo *info = GetRequestInfo(aRequest); if (info) { - PRInt32 oldMax = info->mMaxProgress; + nsInt64 oldMax = info->mMaxProgress; info->mMaxProgress = info->mCurrentProgress; // @@ -562,7 +561,7 @@ nsDocLoader::OnStopRequest(nsIRequest *aRequest, // finished loading, then use this new data to try to calculate a // mMaxSelfProgress... // - if ((oldMax < 0) && (mMaxSelfProgress < 0)) { + if ((oldMax < nsInt64(0)) && (mMaxSelfProgress < nsInt64(0))) { mMaxSelfProgress = CalculateMaxProgress(); } @@ -574,7 +573,7 @@ nsDocLoader::OnStopRequest(nsIRequest *aRequest, // nsRequestInfo::mCurrentProgress are both 0, then the // STATE_TRANSFERRING notification has not been fired yet... // - if ((oldMax == 0) && (info->mCurrentProgress == 0)) { + if ((oldMax == LL_ZERO) && (info->mCurrentProgress == LL_ZERO)) { nsCOMPtr channel(do_QueryInterface(aRequest)); // Only fire a TRANSFERRING notification if the request is also a @@ -836,17 +835,6 @@ void nsDocLoader::doStopDocumentLoad(nsIRequest *request, // The following section contains support for nsIWebProgress and related stuff //////////////////////////////////////////////////////////////////////////////////// -// get web progress returns our web progress listener or if -// we don't have one, it will look up the doc loader hierarchy -// to see if one of our parent doc loaders has one. -nsresult nsDocLoader::GetParentWebProgressListener(nsDocLoader * aDocLoader, nsIWebProgressListener ** aWebProgress) -{ - // if we got here, there is no web progress to return - *aWebProgress = nsnull; - - return NS_OK; -} - NS_IMETHODIMP nsDocLoader::AddProgressListener(nsIWebProgressListener *aListener, PRUint32 aNotifyMask) @@ -903,53 +891,49 @@ nsDocLoader::GetIsLoadingDocument(PRBool *aIsLoadingDocument) return NS_OK; } -PRInt32 nsDocLoader::GetMaxTotalProgress() +PRInt64 nsDocLoader::GetMaxTotalProgress() { - PRInt32 count = 0; - PRInt32 individualProgress, newMaxTotal; + nsInt64 newMaxTotal = 0; - newMaxTotal = 0; - - count = mChildList.Count(); + PRInt32 count = mChildList.Count(); nsCOMPtr webProgress; - nsCOMPtr docloader; for (PRInt32 i=0; i < count; i++) { - individualProgress = 0; - docloader = ChildAt(i); + nsInt64 individualProgress = 0; + nsIDocumentLoader* docloader = ChildAt(i); if (docloader) { // Cast is safe since all children are nsDocLoader too - individualProgress = ((nsDocLoader *) docloader.get())->GetMaxTotalProgress(); + individualProgress = ((nsDocLoader *) docloader)->GetMaxTotalProgress(); } - if (individualProgress < 0) // if one of the elements doesn't know it's size - // then none of them do + if (individualProgress < nsInt64(0)) // if one of the elements doesn't know it's size + // then none of them do { - newMaxTotal = -1; + newMaxTotal = nsInt64(-1); break; } else newMaxTotal += individualProgress; } - PRInt32 progress = -1; - if (mMaxSelfProgress >= 0 && newMaxTotal >= 0) + nsInt64 progress = -1; + if (mMaxSelfProgress >= nsInt64(0) && newMaxTotal >= nsInt64(0)) progress = newMaxTotal + mMaxSelfProgress; return progress; } //////////////////////////////////////////////////////////////////////////////////// -// The following section contains support for nsIEventProgressSink which is used to +// The following section contains support for nsIProgressEventSink which is used to // pass progress and status between the actual request and the doc loader. The doc loader // then turns around and makes the right web progress calls based on this information. //////////////////////////////////////////////////////////////////////////////////// NS_IMETHODIMP nsDocLoader::OnProgress(nsIRequest *aRequest, nsISupports* ctxt, - PRUint32 aProgress, PRUint32 aProgressMax) + PRUint64 aProgress, PRUint64 aProgressMax) { nsRequestInfo *info; - PRInt32 progressDelta = 0; + nsInt64 progressDelta = 0; // // Update the RequestInfo entry with the new progress data @@ -957,7 +941,7 @@ NS_IMETHODIMP nsDocLoader::OnProgress(nsIRequest *aRequest, nsISupports* ctxt, info = GetRequestInfo(aRequest); if (info) { // suppress sending STATE_TRANSFERRING if this is upload progress (see bug 240053) - if (!info->mUploading && (0 == info->mCurrentProgress) && (0 == info->mMaxProgress)) { + if (!info->mUploading && (nsInt64(0) == info->mCurrentProgress) && (nsInt64(0) == info->mMaxProgress)) { // // If we receive an OnProgress event from a toplevel channel that the URI Loader // has not yet targeted, then we must suppress the event. This is necessary to @@ -978,12 +962,12 @@ NS_IMETHODIMP nsDocLoader::OnProgress(nsIRequest *aRequest, nsISupports* ctxt, // so update mMaxSelfProgress... Otherwise, set it to -1 to indicate // that the content-length is no longer known. // - if (aProgressMax != (PRUint32)-1) { - mMaxSelfProgress += aProgressMax; - info->mMaxProgress = aProgressMax; + if (nsUint64(aProgressMax) != LL_MAXUINT) { + mMaxSelfProgress += PRInt64(aProgressMax); + info->mMaxProgress = PRInt64(aProgressMax); } else { - mMaxSelfProgress = -1; - info->mMaxProgress = -1; + mMaxSelfProgress = nsInt64(-1); + info->mMaxProgress = nsInt64(-1); } // Send a STATE_TRANSFERRING notification for the request. @@ -1005,10 +989,10 @@ NS_IMETHODIMP nsDocLoader::OnProgress(nsIRequest *aRequest, nsISupports* ctxt, } // Update the current progress count... - progressDelta = aProgress - info->mCurrentProgress; + progressDelta = nsInt64(PRInt64(aProgress)) - info->mCurrentProgress; mCurrentSelfProgress += progressDelta; - info->mCurrentProgress = aProgress; + info->mCurrentProgress = PRInt64(aProgress); } // // The request is not part of the load group, so ignore its progress @@ -1054,11 +1038,11 @@ NS_IMETHODIMP nsDocLoader::OnStatus(nsIRequest* aRequest, nsISupports* ctxt, // submission in mind, where an upload is performed followed by download // of possibly several documents. if (info->mUploading != uploading) { - mCurrentSelfProgress = mMaxSelfProgress = 0; - mCurrentTotalProgress = mMaxTotalProgress = 0; + mCurrentSelfProgress = mMaxSelfProgress = LL_ZERO; + mCurrentTotalProgress = mMaxTotalProgress = LL_ZERO; info->mUploading = uploading; - info->mCurrentProgress = 0; - info->mMaxProgress = 0; + info->mCurrentProgress = LL_ZERO; + info->mMaxProgress = LL_ZERO; } } @@ -1077,8 +1061,8 @@ void nsDocLoader::ClearInternalProgress() { ClearRequestInfoHash(); - mCurrentSelfProgress = mMaxSelfProgress = 0; - mCurrentTotalProgress = mMaxTotalProgress = 0; + mCurrentSelfProgress = mMaxSelfProgress = LL_ZERO; + mCurrentTotalProgress = mMaxTotalProgress = LL_ZERO; mProgressStateFlags = nsIWebProgressListener::STATE_STOP; } @@ -1086,11 +1070,11 @@ void nsDocLoader::ClearInternalProgress() void nsDocLoader::FireOnProgressChange(nsDocLoader *aLoadInitiator, nsIRequest *request, - PRInt32 aProgress, - PRInt32 aProgressMax, - PRInt32 aProgressDelta, - PRInt32 aTotalProgress, - PRInt32 aMaxTotalProgress) + PRInt64 aProgress, + PRInt64 aProgressMax, + PRInt64 aProgressDelta, + PRInt64 aTotalProgress, + PRInt64 aMaxTotalProgress) { if (mIsLoadingDocument) { mCurrentTotalProgress += aProgressDelta; @@ -1134,9 +1118,10 @@ void nsDocLoader::FireOnProgressChange(nsDocLoader *aLoadInitiator, continue; } + // XXX truncates 64-bit to 32-bit listener->OnProgressChange(aLoadInitiator,request, - aProgress, aProgressMax, - aTotalProgress, aMaxTotalProgress); + PRInt32(aProgress), PRInt32(aProgressMax), + PRInt32(aTotalProgress), PRInt32(aMaxTotalProgress)); } mListenerInfoList.Compact(); @@ -1374,10 +1359,10 @@ CalcMaxProgressCallback(PLDHashTable *table, PLDHashEntryHdr *hdr, PRUint32 number, void *arg) { const nsRequestInfo *info = NS_STATIC_CAST(const nsRequestInfo *, hdr); - PRInt32 *max = NS_STATIC_CAST(PRInt32 *, arg); + nsInt64 *max = NS_STATIC_CAST(nsInt64 *, arg); if (info->mMaxProgress < info->mCurrentProgress) { - *max = -1; + *max = nsInt64(-1); return PL_DHASH_STOP; } @@ -1387,9 +1372,9 @@ CalcMaxProgressCallback(PLDHashTable *table, PLDHashEntryHdr *hdr, return PL_DHASH_NEXT; } -PRInt32 nsDocLoader::CalculateMaxProgress() +PRInt64 nsDocLoader::CalculateMaxProgress() { - PRInt32 max = 0; + nsInt64 max = 0; PL_DHashTableEnumerate(&mRequestInfoHash, CalcMaxProgressCallback, &max); return max; } diff --git a/mozilla/uriloader/base/nsDocLoader.h b/mozilla/uriloader/base/nsDocLoader.h index e60083a6130..6ed2ee7f70e 100644 --- a/mozilla/uriloader/base/nsDocLoader.h +++ b/mozilla/uriloader/base/nsDocLoader.h @@ -56,6 +56,7 @@ #include "nsIInterfaceRequestorUtils.h" #include "nsIHttpEventSink.h" #include "nsISecurityEventSink.h" +#include "nsInt64.h" #include "nsCOMPtr.h" #include "pldhash.h" @@ -146,11 +147,11 @@ protected: void FireOnProgressChange(nsDocLoader* aLoadInitiator, nsIRequest *request, - PRInt32 aProgress, - PRInt32 aProgressMax, - PRInt32 aProgressDelta, - PRInt32 aTotalProgress, - PRInt32 aMaxTotalProgress); + PRInt64 aProgress, + PRInt64 aProgressMax, + PRInt64 aProgressDelta, + PRInt64 aTotalProgress, + PRInt64 aMaxTotalProgress); void FireOnStateChange(nsIWebProgress *aProgress, nsIRequest* request, @@ -171,11 +172,6 @@ protected: void doStopURLLoad(nsIRequest *request, nsresult aStatus); void doStopDocumentLoad(nsIRequest *request, nsresult aStatus); - // get web progress returns our web progress listener or if - // we don't have one, it will look up the doc loader hierarchy - // to see if one of our parent doc loaders has one. - nsresult GetParentWebProgressListener(nsDocLoader * aDocLoader, nsIWebProgressListener ** aWebProgres); - protected: // IMPORTANT: The ownership implicit in the following member // variables has been explicitly checked and set using nsCOMPtr @@ -203,23 +199,23 @@ protected: // feedback interfaces that travis cooked up. PRInt32 mProgressStateFlags; - PRInt32 mCurrentSelfProgress; - PRInt32 mMaxSelfProgress; + nsInt64 mCurrentSelfProgress; + nsInt64 mMaxSelfProgress; - PRInt32 mCurrentTotalProgress; - PRInt32 mMaxTotalProgress; + nsInt64 mCurrentTotalProgress; + nsInt64 mMaxTotalProgress; PLDHashTable mRequestInfoHash; private: nsListenerInfo *GetListenerInfo(nsIWebProgressListener* aListener); - PRInt32 GetMaxTotalProgress(); + PRInt64 GetMaxTotalProgress(); nsresult AddRequestInfo(nsIRequest* aRequest); nsRequestInfo *GetRequestInfo(nsIRequest* aRequest); void ClearRequestInfoHash(); - PRInt32 CalculateMaxProgress(); + PRInt64 CalculateMaxProgress(); /// void DumpChannelInfo(void); // used to clear our internal progress state between loads... diff --git a/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp b/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp index 60f97e7d92a..b63f4aa1f10 100644 --- a/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp +++ b/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp @@ -1,5 +1,4 @@ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * @@ -96,6 +95,7 @@ #include "nsCWebBrowser.h" #include "nsUnicharUtils.h" +#include "nsInt64.h" #include "nsIParser.h" #include "nsEditorMode.h" @@ -1857,7 +1857,7 @@ nsBrowserWindow::ShowMenuBar(PRBool aShow) NS_IMETHODIMP nsBrowserWindow::OnProgress(nsIRequest* request, nsISupports *ctxt, - PRUint32 aProgress, PRUint32 aProgressMax) + PRUint64 aProgress, PRUint64 aProgressMax) { nsresult rv; @@ -1874,10 +1874,10 @@ nsBrowserWindow::OnProgress(nsIRequest* request, nsISupports *ctxt, AppendUTF8toUTF16(str, url); } url.AppendLiteral(": progress "); - url.AppendInt(aProgress, 10); - if (0 != aProgressMax) { + url.AppendInt(PRInt64(aProgress), 10); + if (nsUint64(0) != aProgressMax) { url.AppendLiteral(" (out of "); - url.AppendInt(aProgressMax, 10); + url.AppendInt(PRInt64(aProgressMax), 10); url.Append(NS_LITERAL_STRING(")")); } PRUint32 size; diff --git a/mozilla/xpcom/ds/nsInt64.h b/mozilla/xpcom/ds/nsInt64.h index c7421548cba..0add2f43812 100644 --- a/mozilla/xpcom/ds/nsInt64.h +++ b/mozilla/xpcom/ds/nsInt64.h @@ -272,6 +272,11 @@ public: return LL_EQ(mValue, aObject2.mValue); } + inline PRBool + operator ==(T aValue) const { + return LL_EQ(mValue, aValue); + } + /** * Determine if two 64-bit integers are not equal */ @@ -280,6 +285,10 @@ public: return LL_NE(mValue, aObject2.mValue); } + inline PRBool + operator !=(T aValue) const { + return LL_NE(mValue, aValue); + } /** * Perform a bitwise AND of two 64-bit integers @@ -339,6 +348,15 @@ public: LL_XOR(mValue, mValue, aObject.mValue); return *this; } + + + /** + * Allow doing if (!some_nsInt64) + */ + PRBool operator!() const { + return LL_IS_ZERO(mValue); + } + }; typedef nsTInt64 nsInt64; diff --git a/mozilla/xpinstall/public/nsIXPIProgressDialog.idl b/mozilla/xpinstall/public/nsIXPIProgressDialog.idl index 9152f65a9dd..6cb4f428bd5 100644 --- a/mozilla/xpinstall/public/nsIXPIProgressDialog.idl +++ b/mozilla/xpinstall/public/nsIXPIProgressDialog.idl @@ -42,7 +42,7 @@ * * @status UNDER_REVIEW */ -[scriptable, uuid(8cdf1192-8709-4428-ab97-c5b6ceecd7e9)] +[scriptable, uuid(ce8f744e-d5a5-41b3-911f-0fee3008b64e)] interface nsIXPIProgressDialog : nsISupports { /** @@ -78,5 +78,5 @@ interface nsIXPIProgressDialog : nsISupports * @param value number of bytes downloaded * @param maxValue the total size */ - void onProgress( in unsigned long index, in unsigned long value, in unsigned long maxValue ); + void onProgress( in unsigned long index, in unsigned long long value, in unsigned long long maxValue ); }; diff --git a/mozilla/xpinstall/src/nsXPInstallManager.cpp b/mozilla/xpinstall/src/nsXPInstallManager.cpp index c1e74b68181..0e47cd00d30 100644 --- a/mozilla/xpinstall/src/nsXPInstallManager.cpp +++ b/mozilla/xpinstall/src/nsXPInstallManager.cpp @@ -39,6 +39,7 @@ #include "nscore.h" #include "pratom.h" #include "prmem.h" +#include "nsInt64.h" #include "nsISupports.h" #include "nsIServiceManager.h" @@ -1016,7 +1017,7 @@ nsXPInstallManager::OnDataAvailable(nsIRequest* request, nsISupports *ctxt, NS_IMETHODIMP -nsXPInstallManager::OnProgress(nsIRequest* request, nsISupports *ctxt, PRUint32 aProgress, PRUint32 aProgressMax) +nsXPInstallManager::OnProgress(nsIRequest* request, nsISupports *ctxt, PRUint64 aProgress, PRUint64 aProgressMax) { nsresult rv = NS_OK; @@ -1031,7 +1032,8 @@ nsXPInstallManager::OnProgress(nsIRequest* request, nsISupports *ctxt, PRUint32 if (NS_FAILED(rv)) return rv; } mLastUpdate = now; - rv = mDlg->OnProgress( mNextItem-1, aProgress, mContentLength ); + // XXX once channels support that, use 64-bit contentlength + rv = mDlg->OnProgress( mNextItem-1, aProgress, nsUint64(mContentLength) ); } return rv;