diff --git a/mozilla/caps/src/nsScriptSecurityManager.cpp b/mozilla/caps/src/nsScriptSecurityManager.cpp index 53cf967f66a..5a0c2ca96c3 100644 --- a/mozilla/caps/src/nsScriptSecurityManager.cpp +++ b/mozilla/caps/src/nsScriptSecurityManager.cpp @@ -286,26 +286,9 @@ nsSecurityNameSet::AddNameSet(nsIScriptContext* aScriptContext) // Methods implementing ISupports // //////////////////////////////////// -NS_IMETHODIMP -nsScriptSecurityManager::QueryInterface(REFNSIID aIID, void** aInstancePtr) -{ - if (nsnull == aInstancePtr) - return NS_ERROR_NULL_POINTER; - if (aIID.Equals(NS_GET_IID(nsIScriptSecurityManager))) { - *aInstancePtr = (void*)(nsIScriptSecurityManager *)this; - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(NS_GET_IID(nsIXPCSecurityManager))) { - *aInstancePtr = (void*)(nsIXPCSecurityManager *)this; - NS_ADDREF_THIS(); - return NS_OK; - } - return NS_NOINTERFACE; -} - -NS_IMPL_ADDREF(nsScriptSecurityManager); -NS_IMPL_RELEASE(nsScriptSecurityManager); +NS_IMPL_ISUPPORTS2(nsScriptSecurityManager, + nsIScriptSecurityManager, + nsIXPCSecurityManager) inline PRBool GetBit(unsigned char *bitVector, PRInt32 index) diff --git a/mozilla/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/chrome/src/nsChromeProtocolHandler.cpp index 80b329cc8c5..e54813af0ba 100644 --- a/mozilla/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/chrome/src/nsChromeProtocolHandler.cpp @@ -81,7 +81,7 @@ static NS_DEFINE_CID(kXULPrototypeCacheCID, NS_XULPROTOTYPECACHE_CID); class nsCachedChromeChannel : public nsIChannel { protected: - nsCachedChromeChannel(nsIURI* aURI, nsILoadGroup* aLoadGroup); + nsCachedChromeChannel(nsIURI* aURI); virtual ~nsCachedChromeChannel(); nsCOMPtr mURI; @@ -90,7 +90,7 @@ protected: nsCOMPtr mContext; nsLoadFlags mLoadAttributes; nsCOMPtr mOwner; - PRBool mCancelled; + nsresult mStatus; struct LoadEvent { PLEvent mEvent; @@ -110,13 +110,14 @@ protected: public: static nsresult - Create(nsIURI* aURI, nsILoadGroup* aLoadGroup, nsIChannel** aResult); + Create(nsIURI* aURI, nsIChannel** aResult); NS_DECL_ISUPPORTS // nsIRequest NS_IMETHOD IsPending(PRBool *_retval) { *_retval = PR_TRUE; return NS_OK; } - NS_IMETHOD Cancel(void) { mCancelled = PR_TRUE; return NS_OK; } + NS_IMETHOD GetStatus(nsresult *status) { *status = mStatus; return NS_OK; } + NS_IMETHOD Cancel(nsresult status) { mStatus = status; return NS_OK; } NS_IMETHOD Suspend(void) { return NS_OK; } NS_IMETHOD Resume(void) { return NS_OK; } @@ -133,13 +134,13 @@ NS_IMPL_RELEASE(nsCachedChromeChannel); NS_IMPL_QUERY_INTERFACE2(nsCachedChromeChannel, nsIRequest, nsIChannel); nsresult -nsCachedChromeChannel::Create(nsIURI* aURI, nsILoadGroup* aLoadGroup, nsIChannel** aResult) +nsCachedChromeChannel::Create(nsIURI* aURI, nsIChannel** aResult) { NS_PRECONDITION(aURI != nsnull, "null ptr"); if (! aURI) return NS_ERROR_NULL_POINTER; - nsCachedChromeChannel* channel = new nsCachedChromeChannel(aURI, aLoadGroup); + nsCachedChromeChannel* channel = new nsCachedChromeChannel(aURI); if (! channel) return NS_ERROR_OUT_OF_MEMORY; @@ -149,8 +150,8 @@ nsCachedChromeChannel::Create(nsIURI* aURI, nsILoadGroup* aLoadGroup, nsIChannel } -nsCachedChromeChannel::nsCachedChromeChannel(nsIURI* aURI, nsILoadGroup* aLoadGroup) - : mURI(aURI), mLoadGroup(aLoadGroup), mLoadAttributes (nsIChannel::LOAD_NORMAL), mCancelled(PR_FALSE) +nsCachedChromeChannel::nsCachedChromeChannel(nsIURI* aURI) + : mURI(aURI), mLoadGroup(nsnull), mLoadAttributes (nsIChannel::LOAD_NORMAL), mStatus(NS_OK) { NS_INIT_REFCNT(); @@ -172,7 +173,7 @@ nsCachedChromeChannel::~nsCachedChromeChannel() NS_IMETHODIMP -nsCachedChromeChannel::GetOriginalURI(nsIURI * *aOriginalURI) +nsCachedChromeChannel::GetOriginalURI(nsIURI* *aOriginalURI) { *aOriginalURI = mURI; NS_ADDREF(*aOriginalURI); @@ -180,7 +181,14 @@ nsCachedChromeChannel::GetOriginalURI(nsIURI * *aOriginalURI) } NS_IMETHODIMP -nsCachedChromeChannel::GetURI(nsIURI * *aURI) +nsCachedChromeChannel::SetOriginalURI(nsIURI* aOriginalURI) +{ + mURI = aOriginalURI; + return NS_OK; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetURI(nsIURI* *aURI) { *aURI = mURI; NS_ADDREF(*aURI); @@ -188,15 +196,22 @@ nsCachedChromeChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsCachedChromeChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) +nsCachedChromeChannel::SetURI(nsIURI* aURI) { - NS_NOTREACHED("don't do that"); + mURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsCachedChromeChannel::OpenInputStream(nsIInputStream **_retval) +{ +// NS_NOTREACHED("don't do that"); *_retval = nsnull; return NS_ERROR_FAILURE; } NS_IMETHODIMP -nsCachedChromeChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsCachedChromeChannel::OpenOutputStream(nsIOutputStream **_retval) { NS_NOTREACHED("don't do that"); *_retval = nsnull; @@ -211,7 +226,7 @@ nsCachedChromeChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports *ctxt) } NS_IMETHODIMP -nsCachedChromeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) +nsCachedChromeChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { if (listener) { nsresult rv; @@ -255,7 +270,7 @@ nsCachedChromeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsIS } NS_IMETHODIMP -nsCachedChromeChannel::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) +nsCachedChromeChannel::AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { NS_NOTREACHED("don't do that"); return NS_ERROR_FAILURE; @@ -286,6 +301,7 @@ NS_IMETHODIMP nsCachedChromeChannel::SetContentType(const char *aContentType) { // Do not allow the content-type to be changed. + NS_NOTREACHED("don't do that"); return NS_ERROR_FAILURE; } @@ -297,6 +313,90 @@ nsCachedChromeChannel::GetContentLength(PRInt32 *aContentLength) return NS_ERROR_FAILURE; } +NS_IMETHODIMP +nsCachedChromeChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsCachedChromeChannel::GetOwner(nsISupports * *aOwner) { @@ -338,8 +438,7 @@ nsCachedChromeChannel::GetNotificationCallbacks(nsIInterfaceRequestor * *aNotifi NS_IMETHODIMP nsCachedChromeChannel::SetNotificationCallbacks(nsIInterfaceRequestor * aNotificationCallbacks) { - NS_NOTREACHED("don't do that"); - return NS_ERROR_FAILURE; + return NS_OK; // ignored } @@ -404,7 +503,7 @@ nsCachedChromeChannel::HandleStartLoadEvent(PLEvent* aEvent) // If the load has been cancelled, then just bail now. We won't // send On[Start|Stop]Request(). - if (channel->mCancelled) + if (NS_FAILED(channel->mStatus)) return nsnull; PR_LOG(gLog, PR_LOG_DEBUG, @@ -430,7 +529,7 @@ nsCachedChromeChannel::HandleStopLoadEvent(PLEvent* aEvent) channel, channel->mListener.get())); (void) channel->mListener->OnStopRequest(channel, channel->mContext, - (channel->mCancelled ? NS_BINDING_ABORTED : NS_OK), nsnull); + channel->mStatus, nsnull); if (channel->mLoadGroup) { PR_LOG(gLog, PR_LOG_DEBUG, @@ -543,13 +642,7 @@ nsChromeProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* aNotificationCallbacks, - nsLoadFlags aLoadAttributes, - nsIURI* aOriginalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, +nsChromeProtocolHandler::NewChannel(nsIURI* aURI, nsIChannel* *aResult) { nsresult rv; @@ -576,7 +669,7 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, if (proto) { // ...in which case, we'll create a dummy stream that'll just // load the thing. - rv = nsCachedChromeChannel::Create(aURI, aLoadGroup, getter_AddRefs(result)); + rv = nsCachedChromeChannel::Create(aURI, getter_AddRefs(result)); if (NS_FAILED(rv)) return rv; } else { @@ -593,14 +686,7 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = serv->NewChannelFromURI(aVerb, chromeURI, - aLoadGroup, - aNotificationCallbacks, - aLoadAttributes, - aOriginalURI ? aOriginalURI : aURI, - bufferSegmentSize, bufferMaxSize, - getter_AddRefs(result)); - + rv = serv->NewChannelFromURI(chromeURI, getter_AddRefs(result)); if (NS_FAILED(rv)) return rv; // Get a system principal for chrome and set the owner diff --git a/mozilla/content/base/src/nsGenericElement.cpp b/mozilla/content/base/src/nsGenericElement.cpp index 617d01cc039..0bab7cb295b 100644 --- a/mozilla/content/base/src/nsGenericElement.cpp +++ b/mozilla/content/base/src/nsGenericElement.cpp @@ -1449,7 +1449,7 @@ nsGenericElement::TriggerLink(nsIPresContext* aPresContext, // Resolve url to an absolute url nsAutoString absURLSpec; if (nsnull != aBaseURL) { - rv = NS_MakeAbsoluteURI(aURLSpec, aBaseURL, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, aURLSpec, aBaseURL); if (NS_FAILED(rv)) return rv; } else { diff --git a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp index be24871a395..34983b9a50b 100644 --- a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp +++ b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp @@ -2673,7 +2673,7 @@ nsGenericHTMLElement::MapBackgroundAttributesInto(const nsIHTMLMappedAttributes* aAttributes->GetAttribute(nsHTMLAtoms::_baseHref, baseHref); nsGenericHTMLElement::GetBaseURL(baseHref, doc, getter_AddRefs(docURL)); - rv = NS_MakeAbsoluteURI(spec, docURL, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, spec, docURL); if (NS_SUCCEEDED(rv)) { nsStyleColor* color = (nsStyleColor*) aContext->GetMutableStyleData(eStyleStruct_Color); diff --git a/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp b/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp index 3cec6298f27..05f31cd7ce9 100644 --- a/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLAnchorElement.cpp @@ -375,7 +375,7 @@ nsHTMLAnchorElement::GetHref(nsString& aValue) if (nsnull != baseURL) { // Get absolute URL. - rv = NS_MakeAbsoluteURI(relURLSpec, baseURL, aValue); + rv = NS_MakeAbsoluteURI(aValue, relURLSpec, baseURL); } else { // Absolute URL is same as relative URL. diff --git a/mozilla/content/html/content/src/nsHTMLImageElement.cpp b/mozilla/content/html/content/src/nsHTMLImageElement.cpp index 2d3afb9d49d..df045c533c5 100644 --- a/mozilla/content/html/content/src/nsHTMLImageElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLImageElement.cpp @@ -576,7 +576,7 @@ nsHTMLImageElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, result = GetCallerSourceURL(aContext, getter_AddRefs(base)); if (NS_SUCCEEDED(result)) { - result = NS_MakeAbsoluteURI(src, base, url); + result = NS_MakeAbsoluteURI(url, src, base); if (NS_SUCCEEDED(result)) { result = SetSrcInner(base, url); } @@ -714,7 +714,7 @@ nsHTMLImageElement::GetSrc(nsString& aSrc) if (nsnull != baseURL) { // Get absolute URL. - rv = NS_MakeAbsoluteURI(relURLSpec, baseURL, aSrc); + rv = NS_MakeAbsoluteURI(aSrc, relURLSpec, baseURL); } else { // Absolute URL is same as relative URL. @@ -763,7 +763,7 @@ nsHTMLImageElement::SetSrcInner(nsIURI* aBaseURL, const nsString& aSrc) nsAutoString url; if (nsnull != aBaseURL) { - result = NS_MakeAbsoluteURI(aSrc, aBaseURL, url); + result = NS_MakeAbsoluteURI(url, aSrc, aBaseURL); if (NS_FAILED(result)) { url = aSrc; } diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index 062060f6347..09b450bcf8a 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -1731,7 +1731,7 @@ nsHTMLDocument::OpenCommon(nsIURI* aSourceURL) nsCOMPtr channel; nsCOMPtr group = do_QueryReferent(mDocumentLoadGroup); - result = NS_OpenURI(getter_AddRefs(channel), aSourceURL, group); + result = NS_OpenURI(getter_AddRefs(channel), aSourceURL, nsnull, group); if (NS_FAILED(result)) return result; result = Reset(channel, group); if (NS_FAILED(result)) return result; diff --git a/mozilla/content/html/style/src/nsCSSParser.cpp b/mozilla/content/html/style/src/nsCSSParser.cpp index 8a77fd59fb4..e1596456c0b 100644 --- a/mozilla/content/html/style/src/nsCSSParser.cpp +++ b/mozilla/content/html/style/src/nsCSSParser.cpp @@ -2531,7 +2531,7 @@ PRBool CSSParserImpl::ParseURL(PRInt32& aErrorCode, nsCSSValue& aValue) nsCOMPtr base; rv = mURL->Clone(getter_AddRefs(base)); if (NS_SUCCEEDED(rv)) { - rv = NS_MakeAbsoluteURI(tk->mIdent, base, absURL); + rv = NS_MakeAbsoluteURI(absURL, tk->mIdent, base); } if (NS_FAILED(rv)) { absURL = tk->mIdent; diff --git a/mozilla/content/html/style/src/nsCSSStyleSheet.cpp b/mozilla/content/html/style/src/nsCSSStyleSheet.cpp index 1cce66bcbf4..5c1d752a598 100644 --- a/mozilla/content/html/style/src/nsCSSStyleSheet.cpp +++ b/mozilla/content/html/style/src/nsCSSStyleSheet.cpp @@ -441,6 +441,9 @@ public: nsINameSpace* mNameSpace; PRInt32 mDefaultNameSpaceID; + + static nsIIOService* gIOService; + static nsrefcnt gRefcnt; }; @@ -872,6 +875,9 @@ static PRBool SetStyleSheetReference(nsISupports* aElement, void* aSheet) return PR_TRUE; } +nsIIOService* CSSStyleSheetInner::gIOService = nsnull; +nsrefcnt CSSStyleSheetInner::gRefcnt = 0; + CSSStyleSheetInner::CSSStyleSheetInner(nsICSSStyleSheet* aParentSheet) : mSheets(), mURL(nsnull), @@ -880,6 +886,13 @@ CSSStyleSheetInner::CSSStyleSheetInner(nsICSSStyleSheet* aParentSheet) mDefaultNameSpaceID(kNameSpaceID_None) { MOZ_COUNT_CTOR(CSSStyleSheetInner); + if (gRefcnt++ == 0) { + nsresult rv; + rv = nsServiceManager::GetService(kIOServiceCID, + NS_GET_IID(nsIIOService), + (nsISupports**)&gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't get nsIOService"); + } mSheets.AppendElement(aParentSheet); } @@ -905,6 +918,13 @@ CSSStyleSheetInner::CSSStyleSheetInner(CSSStyleSheetInner& aCopy, mDefaultNameSpaceID(aCopy.mDefaultNameSpaceID) { MOZ_COUNT_CTOR(CSSStyleSheetInner); + if (gRefcnt++ == 0) { + nsresult rv; + rv = nsServiceManager::GetService(kIOServiceCID, + NS_GET_IID(nsIIOService), + (nsISupports**)&gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't get nsIOService"); + } mSheets.AppendElement(aParentSheet); NS_IF_ADDREF(mURL); if (aCopy.mOrderedRules) { @@ -929,6 +949,12 @@ CSSStyleSheetInner::~CSSStyleSheetInner(void) NS_RELEASE(mOrderedRules); } NS_IF_RELEASE(mNameSpace); + if (--gRefcnt == 0) { + nsresult rv; + rv = nsServiceManager::ReleaseService(kIOServiceCID, gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't release nsIOService"); + gIOService = nsnull; + } } CSSStyleSheetInner* @@ -2523,7 +2549,8 @@ static PRBool SelectorMatches(nsIPresContext* aPresContext, rv = docURL->QueryInterface(NS_GET_IID(nsIURI), (void**)&baseUri); if (NS_FAILED(rv)) return PR_FALSE; - NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + (void)NS_MakeAbsoluteURI(absURLSpec, href, baseUri, CSSStyleSheetInner::gIOService); + // XXX what about failure of NS_MakeAbsoluteURI here? NS_RELEASE(baseUri); NS_IF_RELEASE(docURL); diff --git a/mozilla/content/html/style/src/nsHTMLStyleSheet.cpp b/mozilla/content/html/style/src/nsHTMLStyleSheet.cpp index 79b4f293c72..506af22d0f5 100644 --- a/mozilla/content/html/style/src/nsHTMLStyleSheet.cpp +++ b/mozilla/content/html/style/src/nsHTMLStyleSheet.cpp @@ -737,7 +737,7 @@ HTMLStyleSheetImpl::RulesMatching(nsIPresContext* aPresContext, rv = docURL->QueryInterface(NS_GET_IID(nsIURI), (void**)&baseUri); if (NS_FAILED(rv)) return 0; - rv = NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, href, baseUri); NS_RELEASE(baseUri); NS_IF_RELEASE(docURL); diff --git a/mozilla/content/xbl/src/nsXBLService.cpp b/mozilla/content/xbl/src/nsXBLService.cpp index 9c8d0781ae7..567ccb1c04e 100644 --- a/mozilla/content/xbl/src/nsXBLService.cpp +++ b/mozilla/content/xbl/src/nsXBLService.cpp @@ -487,7 +487,7 @@ nsXBLService::FetchBindingDocument(nsIURI* aURI, nsIDocument** aResult) // Now do a blocking synchronous parse of the file. nsCOMPtr in; PRUint32 sourceOffset = 0; - rv = channel->OpenInputStream(0, -1, getter_AddRefs(in)); + rv = channel->OpenInputStream(getter_AddRefs(in)); // If we couldn't open the channel, then just return. if (NS_FAILED(rv)) return NS_OK; diff --git a/mozilla/content/xul/document/src/nsXULDocument.cpp b/mozilla/content/xul/document/src/nsXULDocument.cpp index 7abe6e863d6..d373610bc76 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.cpp +++ b/mozilla/content/xul/document/src/nsXULDocument.cpp @@ -292,30 +292,45 @@ public: // nsIRequest NS_IMETHOD IsPending(PRBool *_retval) { *_retval = PR_TRUE; return NS_OK; } - NS_IMETHOD Cancel(void) { return NS_OK; } + NS_IMETHOD GetStatus(nsresult *status) { *status = NS_OK; return NS_OK; } + NS_IMETHOD Cancel(nsresult status) { return NS_OK; } NS_IMETHOD Suspend(void) { return NS_OK; } NS_IMETHOD Resume(void) { return NS_OK; } // nsIChannel - NS_IMETHOD GetOriginalURI(nsIURI * *aOriginalURI) { *aOriginalURI = gURI; NS_ADDREF(*aOriginalURI); return NS_OK; } - NS_IMETHOD GetURI(nsIURI * *aURI) { *aURI = gURI; NS_ADDREF(*aURI); return NS_OK; } - NS_IMETHOD OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) { *_retval = nsnull; return NS_OK; } - NS_IMETHOD OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) { *_retval = nsnull; return NS_OK; } + NS_IMETHOD GetOriginalURI(nsIURI* *aOriginalURI) { *aOriginalURI = gURI; NS_ADDREF(*aOriginalURI); return NS_OK; } + NS_IMETHOD SetOriginalURI(nsIURI* aOriginalURI) { gURI = aOriginalURI; NS_ADDREF(gURI); return NS_OK; } + NS_IMETHOD GetURI(nsIURI* *aURI) { *aURI = gURI; NS_ADDREF(*aURI); return NS_OK; } + NS_IMETHOD SetURI(nsIURI* aURI) { gURI = aURI; NS_ADDREF(gURI); return NS_OK; } + NS_IMETHOD OpenInputStream(nsIInputStream **_retval) { *_retval = nsnull; return NS_OK; } + NS_IMETHOD OpenOutputStream(nsIOutputStream **_retval) { *_retval = nsnull; return NS_OK; } NS_IMETHOD AsyncOpen(nsIStreamObserver *observer, nsISupports *ctxt) { return NS_OK; } - NS_IMETHOD AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) { return NS_OK; } - NS_IMETHOD AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) { return NS_OK; } + NS_IMETHOD AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { return NS_OK; } + NS_IMETHOD AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { return NS_OK; } NS_IMETHOD GetLoadAttributes(nsLoadFlags *aLoadAttributes) { *aLoadAttributes = nsIChannel::LOAD_NORMAL; return NS_OK; } NS_IMETHOD SetLoadAttributes(nsLoadFlags aLoadAttributes) { return NS_OK; } NS_IMETHOD GetContentType(char * *aContentType) { *aContentType = nsnull; return NS_OK; } NS_IMETHOD SetContentType(const char *aContentType) { return NS_OK; } NS_IMETHOD GetContentLength(PRInt32 *aContentLength) { *aContentLength = 0; return NS_OK; } + NS_IMETHOD SetContentLength(PRInt32 aContentLength) { NS_NOTREACHED("SetContentLength"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetTransferOffset(PRUint32 *aTransferOffset) { NS_NOTREACHED("GetTransferOffset"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetTransferOffset(PRUint32 aTransferOffset) { NS_NOTREACHED("SetTransferOffset"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetTransferCount(PRInt32 *aTransferCount) { NS_NOTREACHED("GetTransferCount"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetTransferCount(PRInt32 aTransferCount) { NS_NOTREACHED("SetTransferCount"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) { NS_NOTREACHED("GetBufferSegmentSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetBufferSegmentSize(PRUint32 aBufferSegmentSize) { NS_NOTREACHED("SetBufferSegmentSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetBufferMaxSize(PRUint32 *aBufferMaxSize) { NS_NOTREACHED("GetBufferMaxSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetBufferMaxSize(PRUint32 aBufferMaxSize) { NS_NOTREACHED("SetBufferMaxSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetShouldCache(PRBool *aShouldCache) { NS_NOTREACHED("GetShouldCache"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetPipeliningAllowed(PRBool *aPipeliningAllowed) { *aPipeliningAllowed = PR_FALSE; return NS_OK; } + NS_IMETHOD SetPipeliningAllowed(PRBool aPipeliningAllowed) { NS_NOTREACHED("SetPipeliningAllowed"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHOD GetOwner(nsISupports * *aOwner) { *aOwner = nsnull; return NS_OK; } NS_IMETHOD SetOwner(nsISupports * aOwner) { return NS_OK; } NS_IMETHOD GetLoadGroup(nsILoadGroup * *aLoadGroup) { *aLoadGroup = mLoadGroup; NS_IF_ADDREF(*aLoadGroup); return NS_OK; } NS_IMETHOD SetLoadGroup(nsILoadGroup * aLoadGroup) { mLoadGroup = aLoadGroup; return NS_OK; } NS_IMETHOD GetNotificationCallbacks(nsIInterfaceRequestor * *aNotificationCallbacks) { *aNotificationCallbacks = nsnull; return NS_OK; } NS_IMETHOD SetNotificationCallbacks(nsIInterfaceRequestor * aNotificationCallbacks) { return NS_OK; } - NS_IMETHOD GetSecurityInfo(nsISupports **info) {*info = nsnull; return NS_OK;} + NS_IMETHOD GetSecurityInfo(nsISupports **info) {*info = nsnull; return NS_OK;} }; PRInt32 PlaceholderChannel::gRefCnt; @@ -1005,35 +1020,35 @@ nsXULDocument::SetRootContent(nsIContent* aRoot) NS_IMETHODIMP nsXULDocument::AppendToProlog(nsIContent* aContent) { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::AppendToProlog"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::AppendToEpilog(nsIContent* aContent) { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::AppendToEpilog"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::ChildAt(PRInt32 aIndex, nsIContent*& aResult) const { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::ChildAt"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::IndexOf(nsIContent* aPossibleChild, PRInt32& aIndex) const { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::IndexOf"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::GetChildCount(PRInt32& aCount) { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::GetChildCount"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -1980,6 +1995,7 @@ NS_IMETHODIMP nsXULDocument::GetContentById(const nsString& aName, nsIContent** aContent) { NS_ASSERTION(0,"not implemented"); + NS_NOTREACHED("nsXULDocument::GetContentById"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -1988,6 +2004,7 @@ NS_IMETHODIMP nsXULDocument::SetTransformMediator(nsITransformMediator* aMediator) { NS_ASSERTION(0,"not implemented"); + NS_NOTREACHED("nsXULDocument::SetTransformMediator"); return NS_ERROR_NOT_IMPLEMENTED; } #endif @@ -2227,7 +2244,7 @@ nsXULDocument::LoadFromStream(nsIInputStream& xulStream, NS_IMETHODIMP nsXULDocument::GetDoctype(nsIDOMDocumentType** aDoctype) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetDoctype"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2235,7 +2252,7 @@ nsXULDocument::GetDoctype(nsIDOMDocumentType** aDoctype) NS_IMETHODIMP nsXULDocument::GetImplementation(nsIDOMDOMImplementation** aImplementation) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetImplementation"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2311,7 +2328,7 @@ nsXULDocument::CreateElement(const nsString& aTagName, nsIDOMElement** aReturn) NS_IMETHODIMP nsXULDocument::CreateDocumentFragment(nsIDOMDocumentFragment** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateDocumentFragment"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2343,7 +2360,7 @@ nsXULDocument::CreateTextNode(const nsString& aData, nsIDOMText** aReturn) NS_IMETHODIMP nsXULDocument::CreateComment(const nsString& aData, nsIDOMComment** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateComment"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2351,7 +2368,7 @@ nsXULDocument::CreateComment(const nsString& aData, nsIDOMComment** aReturn) NS_IMETHODIMP nsXULDocument::CreateCDATASection(const nsString& aData, nsIDOMCDATASection** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateCDATASection"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2359,7 +2376,7 @@ nsXULDocument::CreateCDATASection(const nsString& aData, nsIDOMCDATASection** aR NS_IMETHODIMP nsXULDocument::CreateProcessingInstruction(const nsString& aTarget, const nsString& aData, nsIDOMProcessingInstruction** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateProcessingInstruction"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2367,7 +2384,7 @@ nsXULDocument::CreateProcessingInstruction(const nsString& aTarget, const nsStri NS_IMETHODIMP nsXULDocument::CreateAttribute(const nsString& aName, nsIDOMAttr** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateAttribute"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2375,7 +2392,7 @@ nsXULDocument::CreateAttribute(const nsString& aName, nsIDOMAttr** aReturn) NS_IMETHODIMP nsXULDocument::CreateEntityReference(const nsString& aName, nsIDOMEntityReference** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateEntityReference"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2573,7 +2590,7 @@ nsXULDocument::DestroyForwardReferences() NS_IMETHODIMP nsXULDocument::GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetStyleSheets"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2632,21 +2649,21 @@ nsXULDocument::CreateElementWithNameSpace(const nsString& aTagName, NS_IMETHODIMP nsXULDocument::CreateRange(nsIDOMRange** aRange) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateRange"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::GetWidth(PRInt32* aWidth) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetWidth"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::GetHeight(PRInt32* aHeight) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetHeight"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3072,7 +3089,7 @@ nsXULDocument::GetOwnerDocument(nsIDOMDocument** aOwnerDocument) NS_IMETHODIMP nsXULDocument::InsertBefore(nsIDOMNode* aNewChild, nsIDOMNode* aRefChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::InsertBefore"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3080,7 +3097,7 @@ nsXULDocument::InsertBefore(nsIDOMNode* aNewChild, nsIDOMNode* aRefChild, nsIDOM NS_IMETHODIMP nsXULDocument::ReplaceChild(nsIDOMNode* aNewChild, nsIDOMNode* aOldChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::ReplaceChild"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3088,7 +3105,7 @@ nsXULDocument::ReplaceChild(nsIDOMNode* aNewChild, nsIDOMNode* aOldChild, nsIDOM NS_IMETHODIMP nsXULDocument::RemoveChild(nsIDOMNode* aOldChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::RemoveChild"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3096,7 +3113,7 @@ nsXULDocument::RemoveChild(nsIDOMNode* aOldChild, nsIDOMNode** aReturn) NS_IMETHODIMP nsXULDocument::AppendChild(nsIDOMNode* aNewChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::AppendChild"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -4782,7 +4799,7 @@ nsXULDocument::ResumeWalk() if (NS_FAILED(rv)) return rv; nsCOMPtr in; PRUint32 sourceOffset = 0; - rv = channel->OpenInputStream(0, -1, getter_AddRefs(in)); + rv = channel->OpenInputStream(getter_AddRefs(in)); // If we couldn't open the channel, then just return. if (NS_FAILED(rv)) return NS_OK; @@ -4822,7 +4839,7 @@ nsXULDocument::ResumeWalk() } else { nsCOMPtr group = do_QueryReferent(mDocumentLoadGroup); - rv = NS_OpenURI(listener, nsnull, uri, group); + rv = NS_OpenURI(listener, nsnull, uri, nsnull, group); if (NS_FAILED(rv)) return rv; } diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index cd0d64294eb..cd7d277abea 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -2245,8 +2245,9 @@ NS_IMETHODIMP nsDocShell::DoURILoad(nsIURI* aURI) // open a channel for the url nsCOMPtr channel; - NS_ENSURE_SUCCESS(NS_OpenURI(getter_AddRefs(channel), aURI, loadGroup, - NS_STATIC_CAST(nsIInterfaceRequestor*, this)), NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(NS_OpenURI(getter_AddRefs(channel), aURI, nsnull, loadGroup, + NS_STATIC_CAST(nsIInterfaceRequestor*, this)), + NS_ERROR_FAILURE); NS_ENSURE_SUCCESS(uriLoader->OpenURI(channel, nsIURILoader::viewNormal, nsnull, NS_STATIC_CAST(nsIDocShell*, this)), NS_ERROR_FAILURE); diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 4561a62bd6b..2abd376ea91 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -1080,7 +1080,8 @@ nsWebShell::DoLoadURL(nsIURI * aUri, // so move the creation down into each of the if clauses... if (nsnull != (const char *) ref) { - rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, interfaceRequestor); + rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, nsnull, + interfaceRequestor); if (NS_FAILED(rv)) return rv; if (!mProcessedEndDocumentLoad) rv = OnStartDocumentLoad(mDocLoader, aUri, "load"); @@ -1101,7 +1102,8 @@ nsWebShell::DoLoadURL(nsIURI * aUri, } else if (aType == nsISessionHistory::LOAD_HISTORY) { - rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, interfaceRequestor); + rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, nsnull, + interfaceRequestor); if (NS_FAILED(rv)) return rv; rv = OnStartDocumentLoad(mDocLoader, aUri, "load"); // Go to the top of the current document @@ -1196,16 +1198,18 @@ nsWebShell::DoLoadURL(nsIURI * aUri, Recycle(referrerStr); } - rv = pNetService->NewChannelFromURI(aCommand, aUri, loadGroup, requestor, - aType, referrer /* referring uri */, - 0, 0, - getter_AddRefs(pChannel)); + rv = NS_OpenURI(getter_AddRefs(pChannel), aUri, pNetService, loadGroup, requestor, aType); + if (NS_SUCCEEDED(rv)) { + // XXX wrong, but needed for now: + rv = pChannel->SetOriginalURI(referrer ? referrer : aUri); + } if (NS_FAILED(rv)) { - if (rv == NS_ERROR_DOM_RETVAL_UNDEFINED) // if causing the channel changed the - return NS_OK; // dom and there is nothing else to do - else + if (rv == NS_ERROR_DOM_RETVAL_UNDEFINED) // if causing the channel changed the + return NS_OK; // dom and there is nothing else to do + else return rv; // uhoh we were unable to get a channel to handle the url!!! - } + } + // Mark the channel as being a document URI... nsLoadFlags loadAttribs = 0; pChannel->GetLoadAttributes(&loadAttribs); diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index c93a93741d1..cc90549eb7f 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -2369,7 +2369,7 @@ NS_IMETHODIMP GlobalWindowImpl::OpenInternal(JSContext* cx, jsval* argv, nsCOMPtr baseUri(do_QueryInterface(docURL)); NS_ENSURE_TRUE(baseUri, NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(NS_MakeAbsoluteURI(mURL, baseUri, mAbsURL), + NS_ENSURE_SUCCESS(NS_MakeAbsoluteURI(mAbsURL, mURL, baseUri), NS_ERROR_FAILURE); } else diff --git a/mozilla/dom/src/jsurl/nsIEvaluateStringProxy.idl b/mozilla/dom/src/jsurl/nsIEvaluateStringProxy.idl index b76bfea6d47..6fceef71733 100644 --- a/mozilla/dom/src/jsurl/nsIEvaluateStringProxy.idl +++ b/mozilla/dom/src/jsurl/nsIEvaluateStringProxy.idl @@ -22,20 +22,23 @@ #include "nsISupports.idl" +interface nsIChannel; +interface nsIURI; interface nsIPrincipal; interface nsIScriptContext; [uuid(67411da0-7c2e-11d3-8c67-00609792278c)] interface nsIEvaluateStringProxy: nsISupports { + /** + * Channel of the javascript: url to evaluate: + */ + void init(in nsIChannel channel); - void evaluateString( in nsIScriptContext scriptContext, - in string script, - in voidStar aObj, - in nsIPrincipal principal, - in string aURL, - in long aLineNo, - out string aRetValue, - out boolean aIsUndefined); + /** + * Cause the evaluation to happen: + */ + void evaluateString(out string aRetValue, + out boolean aIsUndefined); }; diff --git a/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp b/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp index 09a954b112c..24b525ecf43 100644 --- a/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp +++ b/mozilla/dom/src/jsurl/nsJSProtocolHandler.cpp @@ -42,65 +42,261 @@ #include "nsDOMError.h" #include "nsIInterfaceRequestor.h" #include "nsIEvaluateStringProxy.h" +#include "nsXPIDLString.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); static NS_DEFINE_CID(kSimpleURICID, NS_SIMPLEURI_CID); static NS_DEFINE_CID(kJSProtocolHandlerCID, NS_JSPROTOCOLHANDLER_CID); +class nsJSInputStream; + /***************************************************************************/ /* nsEvaluateStringProxy */ /* This private class will allow us to evaluate js on another thread */ /***************************************************************************/ class nsEvaluateStringProxy : public nsIEvaluateStringProxy { - public: +public: NS_DECL_ISUPPORTS NS_DECL_NSIEVALUATESTRINGPROXY nsEvaluateStringProxy(); virtual ~nsEvaluateStringProxy(); +protected: + nsCOMPtr mChannel; }; nsEvaluateStringProxy::nsEvaluateStringProxy() { NS_INIT_REFCNT(); - NS_ADDREF_THIS(); } nsEvaluateStringProxy::~nsEvaluateStringProxy() { } -NS_IMPL_ISUPPORTS1(nsEvaluateStringProxy, nsIEvaluateStringProxy) +NS_IMPL_THREADSAFE_ISUPPORTS1(nsEvaluateStringProxy, nsIEvaluateStringProxy) NS_IMETHODIMP -nsEvaluateStringProxy::EvaluateString(nsIScriptContext *scriptContext, - const char *script, - void * aObj, - nsIPrincipal *principal, - const char *aURL, - PRInt32 aLineNo, - char **aRetValue, - PRBool *aIsUndefined) +nsEvaluateStringProxy::Init(nsIChannel* channel) { - nsString string; - nsresult rv; + mChannel = channel; + return NS_OK; +} - rv = scriptContext->EvaluateString(nsString(script), - aObj, - principal, - aURL, - aLineNo, - nsnull, - string, - aIsUndefined); +NS_IMETHODIMP +nsEvaluateStringProxy::EvaluateString(char **aRetValue, PRBool *aIsUndefined) +{ + nsresult rv; + + NS_ENSURE_ARG_POINTER(mChannel); + nsCOMPtr callbacks; + rv = mChannel->GetNotificationCallbacks(getter_AddRefs(callbacks)); + if (NS_FAILED(rv)) return rv; + + // The event sink must be a script global Object Owner or we fail. + nsCOMPtr globalOwner; + callbacks->GetInterface(NS_GET_IID(nsIScriptGlobalObjectOwner), + getter_AddRefs(globalOwner)); + NS_ENSURE_TRUE(globalOwner, NS_ERROR_FAILURE); + + // So far so good: get the script context from its owner. + nsCOMPtr global; + globalOwner->GetScriptGlobalObject(getter_AddRefs(global)); + NS_ENSURE_TRUE(global, NS_ERROR_FAILURE); + + nsCOMPtr scriptContext; + rv = global->GetContext(getter_AddRefs(scriptContext)); + if (NS_FAILED(rv)) return rv; + + // Get principal of code for execution + NS_WITH_SERVICE(nsIScriptSecurityManager, securityManager, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) return rv; + + // Get principal + nsCOMPtr principal; + nsCOMPtr referringUri; + // XXX this is wrong: see bugs 31818 and 29831. Norris is looking at it. + rv = mChannel->GetOriginalURI(getter_AddRefs(referringUri)); + if (NS_FAILED(rv)) { + // No referrer available. Use the current javascript: URI, which will mean + // that this script will be in another trust domain than any other script + // since SameOrigin should be false for anything other than the same + // javascript: URI. +#if 0 + nsCOMPtr docShell; + docShell = do_QueryInterface(globalOwner, &rv); + if (NS_FAILED(rv)) return rv; + rv = docShell->GetCurrentURI(getter_AddRefs(referringUri)); +#else + rv = mChannel->GetURI(getter_AddRefs(referringUri)); +#endif + if (NS_FAILED(rv)) return rv; + } + rv = securityManager->GetCodebasePrincipal(referringUri, + getter_AddRefs(principal)); + if (NS_FAILED(rv)) return rv; + + nsCOMPtr jsURI; + rv = mChannel->GetURI(getter_AddRefs(jsURI)); + if (NS_FAILED(rv)) return rv; + + nsXPIDLCString script; + rv = jsURI->GetPath(getter_Copies(script)); + if (NS_FAILED(rv)) return rv; + + // Finally, we have everything needed to evaluate the expression. + + nsString result; + rv = scriptContext->EvaluateString(nsString(script), + nsnull, // obj + principal, + nsnull, // url + 0, // line no + nsnull, + result, + aIsUndefined); // XXXbe this should not decimate! pass back UCS-2 to necko - *aRetValue = string.ToNewCString(); + *aRetValue = result.ToNewCString(); return rv; } //////////////////////////////////////////////////////////////////////////////// +class nsJSInputStream : public nsIInputStream +{ +public: + NS_DECL_ISUPPORTS + + nsJSInputStream() + : mResult(nsnull), mLength(0), mReadCursor(0), mChannel(nsnull) { + NS_INIT_REFCNT(); + } + + virtual ~nsJSInputStream() { + (void)Close(); + } + + nsresult Init(nsIURI* uri, nsIChannel* channel) { + NS_ENSURE_ARG_POINTER(uri); + NS_ENSURE_ARG_POINTER(channel); + mURI = uri; + mChannel = channel; + return NS_OK; + } + + NS_IMETHOD Close() { + if (mResult) + nsCRT::free(mResult); + mLength = 0; + mReadCursor = 0; + mChannel = nsnull; + return NS_OK; + } + + NS_IMETHOD Available(PRUint32 *result) { + if (!mResult) { + nsresult rv = Eval(); + if (NS_FAILED(rv)) + return rv; + NS_ASSERTION(mResult, "Eval didn't set mResult"); + } + PRUint32 rest = mLength - mReadCursor; + if (!rest) + return NS_ERROR_FAILURE; + *result = rest; + return NS_OK; + } + + NS_IMETHOD Read(char * buf, PRUint32 count, PRUint32 *result) { + nsresult rv; + PRUint32 rest; + rv = Available(&rest); + if (rv != NS_OK) + return rv; + PRUint32 amt = PR_MIN(count, rest); + nsCRT::memcpy(buf, &mResult[mReadCursor], amt); + mReadCursor += amt; + *result = amt; + return NS_OK; + } + + nsresult Eval() { + nsresult rv; + + // We do this by proxying back to the main thread. + NS_WITH_SERVICE(nsIProxyObjectManager, proxyObjectManager, + nsIProxyObjectManager::GetCID(), &rv); + if (NS_FAILED(rv)) return rv; + + nsEvaluateStringProxy* eval = new nsEvaluateStringProxy(); + if (eval == nsnull) + return NS_ERROR_OUT_OF_MEMORY; + NS_ADDREF(eval); + rv = eval->Init(mChannel); + if (NS_FAILED(rv)) return rv; + + nsCOMPtr evalProxy; + rv = proxyObjectManager->GetProxyObject(NS_UI_THREAD_EVENTQ, + NS_GET_IID(nsIEvaluateStringProxy), + NS_STATIC_CAST(nsISupports*, eval), + PROXY_SYNC | PROXY_ALWAYS, + getter_AddRefs(evalProxy)); + + if (NS_FAILED(rv)) { + NS_RELEASE(eval); + return rv; + } + + char* retString; + PRBool isUndefined; + rv = evalProxy->EvaluateString(&retString, &isUndefined); + + NS_RELEASE(eval); + + if (NS_FAILED(rv)) { + rv = NS_ERROR_MALFORMED_URI; + return rv; + } + + if (isUndefined) { + if (retString) + Recycle(retString); + rv = NS_ERROR_DOM_RETVAL_UNDEFINED; + return rv; + } +#if 0 + else { + // This is from the old code which need to be hack on a bit more: + + // plaintext is apparently busted + if (ret[0] != PRUnichar('<')) + ret.Insert("\n", 0); + mLength = ret.Length(); + PRUint32 resultSize = mLength + 1; + mResult = (char *)PR_Malloc(resultSize); + ret.ToCString(mResult, resultSize); + } +#endif + + mResult = retString; + mLength = nsCRT::strlen(retString); + return rv; + } + +protected: + nsCOMPtr<nsIURI> mURI; + nsCOMPtr<nsIChannel> mChannel; + char* mResult; + PRUint32 mLength; + PRUint32 mReadCursor; +}; + +NS_IMPL_THREADSAFE_ISUPPORTS(nsJSInputStream, NS_GET_IID(nsIInputStream)); + +//////////////////////////////////////////////////////////////////////////////// + nsJSProtocolHandler::nsJSProtocolHandler() { NS_INIT_REFCNT(); @@ -187,171 +383,25 @@ nsJSProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsJSProtocolHandler::NewChannel(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsJSProtocolHandler::NewChannel(nsIURI* uri, nsIChannel* *result) { - NS_ENSURE_ARG_POINTER(uri); - NS_ENSURE_ARG_POINTER(notificationCallbacks); - nsresult rv; + NS_ENSURE_ARG_POINTER(uri); - // The event sink must be a script global Object Owner or we fail. - nsCOMPtr<nsIScriptGlobalObjectOwner> globalOwner; - notificationCallbacks->GetInterface(NS_GET_IID(nsIScriptGlobalObjectOwner), - getter_AddRefs(globalOwner)); - NS_ENSURE_TRUE(globalOwner, NS_ERROR_FAILURE); - - // So far so good: get the script context from its owner. - nsCOMPtr<nsIScriptGlobalObject> global; - globalOwner->GetScriptGlobalObject(getter_AddRefs(global)); - NS_ENSURE_TRUE(global, NS_ERROR_FAILURE); - - nsCOMPtr<nsIScriptContext> scriptContext; - rv = global->GetContext(getter_AddRefs(scriptContext)); - if (NS_FAILED(rv)) - return rv; - - // Get principal of code for execution - NS_WITH_SERVICE(nsIScriptSecurityManager, securityManager, - NS_SCRIPTSECURITYMANAGER_PROGID, &rv); - if (NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - // Get principal - nsCOMPtr<nsIPrincipal> principal; - nsCOMPtr<nsIURI> referringUri; - if (originalURI) { - // XXX this is wrong: see bugs 31818 and 29831. warren is looking at it. - referringUri = originalURI; - } else { - // No referrer available. Use the current javascript: URI, which will mean - // that this script will be in another trust domain than any other script - // since SameOrigin should be false for anything other than the same - // javascript: URI. - referringUri = uri; - } - if (NS_FAILED(securityManager->GetCodebasePrincipal(referringUri, - getter_AddRefs(principal)))) - { - return NS_ERROR_FAILURE; - } - - - //TODO Change this to GetSpec and then skip past the javascript: - // Get the expression: - - char* str; - rv = uri->GetPath(&str); - if (NS_FAILED(rv)) - return rv; - - nsString jsExpr(str); - - nsCRT::free(str); - - // Finally, we have everything needed to evaluate the expression. - // We do this by proxying back to the main thread. - - PRBool isUndefined; - - NS_WITH_SERVICE(nsIProxyObjectManager, proxyObjectManager, - nsIProxyObjectManager::GetCID(), &rv); - - if (NS_FAILED(rv)) - return rv; - - nsIEvaluateStringProxy* evalProxy = nsnull; - nsEvaluateStringProxy* eval = new nsEvaluateStringProxy(); - - if (eval == nsnull) + nsJSInputStream* in = new nsJSInputStream(); + if (in == nsnull) return NS_ERROR_OUT_OF_MEMORY; + NS_ADDREF(in); - rv = proxyObjectManager->GetProxyObject(NS_UI_THREAD_EVENTQ, - NS_GET_IID(nsIEvaluateStringProxy), - NS_STATIC_CAST(nsISupports*, eval), - PROXY_SYNC | PROXY_ALWAYS, - (void**) &evalProxy); - - if (NS_FAILED(rv)) { - NS_RELEASE(eval); - return rv; - } - - char* retString; - char* tempString = jsExpr.ToNewCString(); - if (!tempString) { - NS_RELEASE(evalProxy); - NS_RELEASE(eval); - return NS_ERROR_OUT_OF_MEMORY; - } - - rv = evalProxy->EvaluateString(scriptContext, tempString, nsnull, principal, nsnull, 0, &retString, &isUndefined); - - Recycle(tempString); - - NS_RELEASE(evalProxy); - NS_RELEASE(eval); - - if (NS_FAILED(rv)) { - rv = NS_ERROR_MALFORMED_URI; - return rv; - } - - if (isUndefined) { - if (retString) - Recycle(retString); - rv = NS_ERROR_DOM_RETVAL_UNDEFINED; - return rv; - } -#if 0 - else { -// This is from the old code which need to be hack on a bit more: - -// plaintext is apparently busted - if (ret[0] != PRUnichar('<')) - ret.Insert("<plaintext>\n", 0); - mLength = ret.Length(); - PRUint32 resultSize = mLength + 1; - mResult = (char *)PR_Malloc(resultSize); - ret.ToCString(mResult, resultSize); - } -#endif - - nsCOMPtr<nsISupports> s; - rv = NS_NewStringInputStream(getter_AddRefs(s), retString); - int length = PL_strlen(retString); - Recycle(retString); - - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr<nsIInputStream> in = do_QueryInterface(s, &rv); + nsCOMPtr<nsIChannel> channel; + rv = NS_NewInputStreamChannel(getter_AddRefs(channel), + uri, in, "text/html", -1); + if (NS_FAILED(rv)) return rv; + rv = in->Init(uri, channel); if (NS_FAILED(rv)) return rv; - nsIChannel* channel; - - rv = NS_NewInputStreamChannel(uri, "text/html", length, - in, aLoadGroup, - notificationCallbacks, loadAttributes, - originalURI, bufferSegmentSize, - bufferMaxSize, &channel); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr<nsISupports> owner = do_QueryInterface(principal); - rv = channel->SetOwner(owner); - if (NS_FAILED(rv)) - return rv; - *result = channel; - return rv; + return NS_OK; } //////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/extensions/datetime/nsDateTimeChannel.cpp b/mozilla/extensions/datetime/nsDateTimeChannel.cpp index bfd4a52db3e..d910e9779f3 100644 --- a/mozilla/extensions/datetime/nsDateTimeChannel.cpp +++ b/mozilla/extensions/datetime/nsDateTimeChannel.cpp @@ -44,20 +44,12 @@ nsDateTimeChannel::~nsDateTimeChannel() { NS_IMPL_ISUPPORTS4(nsDateTimeChannel, nsIChannel, nsIRequest, nsIStreamListener, nsIStreamObserver) nsresult -nsDateTimeChannel::Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsDateTimeChannel::Init(nsIURI* uri) { nsresult rv; NS_ASSERTION(uri, "no uri"); - mOriginalURI = originalURI ? originalURI : uri; mUrl = uri; rv = mUrl->GetPort(&mPort); @@ -69,13 +61,6 @@ nsDateTimeChannel::Init(const char* verb, if (!*(const char *)mHost) return NS_ERROR_NOT_INITIALIZED; - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - return NS_OK; } @@ -97,24 +82,35 @@ nsDateTimeChannel::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult NS_IMETHODIMP nsDateTimeChannel::IsPending(PRBool *result) { + NS_NOTREACHED("nsDateTimeChannel::IsPending"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsDateTimeChannel::Cancel(void) +nsDateTimeChannel::GetStatus(nsresult *status) { + *status = NS_OK; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::Cancel(nsresult status) +{ + NS_NOTREACHED("nsDateTimeChannel::Cancel"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDateTimeChannel::Suspend(void) { + NS_NOTREACHED("nsDateTimeChannel::Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDateTimeChannel::Resume(void) { + NS_NOTREACHED("nsDateTimeChannel::Resume"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -122,15 +118,22 @@ nsDateTimeChannel::Resume(void) // nsIChannel methods: NS_IMETHODIMP -nsDateTimeChannel::GetOriginalURI(nsIURI * *aURI) +nsDateTimeChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mUrl; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsDateTimeChannel::GetURI(nsIURI * *aURI) +nsDateTimeChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetURI(nsIURI* *aURI) { *aURI = mUrl; NS_IF_ADDREF(*aURI); @@ -138,8 +141,14 @@ nsDateTimeChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsDateTimeChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **_retval) +nsDateTimeChannel::SetURI(nsIURI* aURI) +{ + mUrl = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::OpenInputStream(nsIInputStream **_retval) { nsresult rv = NS_OK; @@ -153,12 +162,13 @@ nsDateTimeChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = channel->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; - return channel->OpenInputStream(startPosition, readCount, _retval); + return channel->OpenInputStream(_retval); } NS_IMETHODIMP -nsDateTimeChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsDateTimeChannel::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("nsDateTimeChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -181,9 +191,8 @@ nsDateTimeChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsDateTimeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *aListener) +nsDateTimeChannel::AsyncRead(nsIStreamListener *aListener, + nsISupports *ctxt) { nsresult rv = NS_OK; @@ -199,16 +208,15 @@ nsDateTimeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, mListener = aListener; - return channel->AsyncRead(startPosition, readCount, ctxt, this); + return channel->AsyncRead(this, ctxt); } NS_IMETHODIMP nsDateTimeChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { + NS_NOTREACHED("nsDateTimeChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -252,6 +260,90 @@ nsDateTimeChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsDateTimeChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsDateTimeChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsDateTimeChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsDateTimeChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsDateTimeChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsDateTimeChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsDateTimeChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsDateTimeChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsDateTimeChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsDateTimeChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsDateTimeChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { diff --git a/mozilla/extensions/datetime/nsDateTimeChannel.h b/mozilla/extensions/datetime/nsDateTimeChannel.h index d8a7979231f..e10f74e2f53 100644 --- a/mozilla/extensions/datetime/nsDateTimeChannel.h +++ b/mozilla/extensions/datetime/nsDateTimeChannel.h @@ -55,14 +55,7 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(nsIURI* uri); protected: nsCOMPtr<nsIInterfaceRequestor> mCallbacks; diff --git a/mozilla/extensions/datetime/nsDateTimeHandler.cpp b/mozilla/extensions/datetime/nsDateTimeHandler.cpp index b8e87303515..25d4deb2fd6 100644 --- a/mozilla/extensions/datetime/nsDateTimeHandler.cpp +++ b/mozilla/extensions/datetime/nsDateTimeHandler.cpp @@ -95,14 +95,7 @@ nsDateTimeHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsDateTimeHandler::NewChannel(const char* verb, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsDateTimeHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; @@ -110,8 +103,7 @@ nsDateTimeHandler::NewChannel(const char* verb, nsIURI* url, rv = nsDateTimeChannel::Create(nsnull, NS_GET_IID(nsIChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/extensions/finger/nsFingerChannel.cpp b/mozilla/extensions/finger/nsFingerChannel.cpp index 62923c9913a..f793d2d7210 100644 --- a/mozilla/extensions/finger/nsFingerChannel.cpp +++ b/mozilla/extensions/finger/nsFingerChannel.cpp @@ -37,10 +37,11 @@ static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID); #define BUFFER_MAX_SIZE (64*1024) // nsFingerChannel methods -nsFingerChannel::nsFingerChannel(): - mContentLength(-1), - mActAsObserver(PR_TRUE), - mPort(-1) +nsFingerChannel::nsFingerChannel() + : mContentLength(-1), + mActAsObserver(PR_TRUE), + mPort(-1), + mStatus(NS_OK) { NS_INIT_REFCNT(); } @@ -52,21 +53,13 @@ NS_IMPL_THREADSAFE_ISUPPORTS4(nsFingerChannel, nsIChannel, nsIRequest, nsIStreamListener, nsIStreamObserver) nsresult -nsFingerChannel::Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsFingerChannel::Init(nsIURI* uri) { nsresult rv; nsXPIDLCString autoBuffer; NS_ASSERTION(uri, "no uri"); - mOriginalURI = originalURI ? originalURI : uri; mUrl = uri; // For security reasons, we do not allow the user to specify a @@ -101,16 +94,10 @@ nsFingerChannel::Init(const char* verb, #ifdef DEBUG_bryner printf("Status:mUser = %s, mHost = %s\n", (const char*)mUser, - (const char*)mHost); + (const char*)mHost); #endif if (!*(const char *)mHost) return NS_ERROR_NOT_INITIALIZED; - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; return NS_OK; } @@ -132,16 +119,25 @@ nsFingerChannel::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult) NS_IMETHODIMP nsFingerChannel::IsPending(PRBool *result) { + NS_NOTREACHED("nsFingerChannel::IsPending"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsFingerChannel::Cancel(void) +nsFingerChannel::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::Cancel(nsresult status) { nsresult rv = NS_ERROR_FAILURE; + mStatus = status; if (mTransport) { - rv = mTransport->Cancel(); + rv = mTransport->Cancel(status); } return rv; } @@ -149,12 +145,14 @@ nsFingerChannel::Cancel(void) NS_IMETHODIMP nsFingerChannel::Suspend(void) { + NS_NOTREACHED("nsFingerChannel::Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFingerChannel::Resume(void) { + NS_NOTREACHED("nsFingerChannel::Resume"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -162,15 +160,22 @@ nsFingerChannel::Resume(void) // nsIChannel methods: NS_IMETHODIMP -nsFingerChannel::GetOriginalURI(nsIURI * *aURI) +nsFingerChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mUrl; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsFingerChannel::GetURI(nsIURI * *aURI) +nsFingerChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::GetURI(nsIURI* *aURI) { *aURI = mUrl; NS_IF_ADDREF(*aURI); @@ -178,8 +183,14 @@ nsFingerChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsFingerChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **_retval) +nsFingerChannel::SetURI(nsIURI* aURI) +{ + mUrl = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::OpenInputStream(nsIInputStream **_retval) { nsresult rv = NS_OK; @@ -194,12 +205,13 @@ nsFingerChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = channel->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; - return channel->OpenInputStream(startPosition, readCount, _retval); + return channel->OpenInputStream(_retval); } NS_IMETHODIMP -nsFingerChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsFingerChannel::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("nsFingerChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -210,9 +222,7 @@ nsFingerChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsFingerChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *aListener) +nsFingerChannel::AsyncRead(nsIStreamListener *aListener, nsISupports *ctxt) { nsresult rv = NS_OK; @@ -236,11 +246,10 @@ nsFingerChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsFingerChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { + NS_NOTREACHED("nsFingerChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -284,6 +293,90 @@ nsFingerChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsFingerChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsFingerChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsFingerChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsFingerChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsFingerChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsFingerChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsFingerChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsFingerChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsFingerChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsFingerChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsFingerChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -373,7 +466,7 @@ nsFingerChannel::OnStopRequest(nsIChannel* aChannel, nsISupports* aContext, // we're no longer acting as an observer. mActAsObserver = PR_FALSE; - return aChannel->AsyncRead(0, -1, mResponseContext, this); + return aChannel->AsyncRead(this, mResponseContext); } } @@ -415,8 +508,9 @@ nsFingerChannel::SendRequest(nsIChannel* aChannel) { printf("Sending: %s\n", requestBuffer.GetBuffer()); #endif - rv = aChannel->AsyncWrite(charstream, 0, requestBuffer.Length(), 0, - this); + rv = aChannel->SetTransferCount(requestBuffer.Length()); + if (NS_FAILED(rv)) return rv; + rv = aChannel->AsyncWrite(charstream, this, 0); return rv; } diff --git a/mozilla/extensions/finger/nsFingerChannel.h b/mozilla/extensions/finger/nsFingerChannel.h index dd1dfd29205..10b18fdd4ef 100644 --- a/mozilla/extensions/finger/nsFingerChannel.h +++ b/mozilla/extensions/finger/nsFingerChannel.h @@ -51,14 +51,7 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(nsIURI* uri); protected: nsCOMPtr<nsIInterfaceRequestor> mCallbacks; @@ -82,6 +75,7 @@ protected: nsCOMPtr<nsISupports> mResponseContext; nsCOMPtr<nsIChannel> mTransport; + nsresult mStatus; protected: nsresult SendRequest(nsIChannel* aChannel); diff --git a/mozilla/extensions/finger/nsFingerHandler.cpp b/mozilla/extensions/finger/nsFingerHandler.cpp index 0b3e5624fe4..d6e6606cfc3 100644 --- a/mozilla/extensions/finger/nsFingerHandler.cpp +++ b/mozilla/extensions/finger/nsFingerHandler.cpp @@ -95,14 +95,7 @@ nsFingerHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsFingerHandler::NewChannel(const char* verb, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsFingerHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; @@ -110,8 +103,7 @@ nsFingerHandler::NewChannel(const char* verb, nsIURI* url, rv = nsFingerChannel::Create(nsnull, NS_GET_IID(nsIChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/extensions/wallet/src/wallet.cpp b/mozilla/extensions/wallet/src/wallet.cpp index a5740c4c78f..60f253c8735 100644 --- a/mozilla/extensions/wallet/src/wallet.cpp +++ b/mozilla/extensions/wallet/src/wallet.cpp @@ -26,9 +26,7 @@ #define AutoCapture #include "wallet.h" -#include "nsIIOService.h" -#include "nsIURL.h" -#include "nsIChannel.h" +#include "nsNetUtil.h" #include "nsIServiceManager.h" #include "nsIDocument.h" @@ -248,9 +246,7 @@ NS_NewURItoFile(const char *in, nsFileSpec dirSpec, const char *out) nsCOMPtr<nsIChannel> pChannel; // Async reading thru the calls of the event sink interface - rv = serv->NewChannelFromURI("load", pURL, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, 0, 0, - getter_AddRefs(pChannel)); + rv = NS_OpenURI(getter_AddRefs(pChannel), pURL, serv); if (NS_FAILED(rv)) { printf("ERROR: NewChannelFromURI failed for %s\n", in); return rv; @@ -270,10 +266,8 @@ NS_NewURItoFile(const char *in, nsFileSpec dirSpec, const char *out) return rv; } - rv = pChannel->AsyncRead(0, // starting position - -1, // number of bytes to read - nsnull, // ISupports context - listener); // IStreamListener consumer + rv = pChannel->AsyncRead(listener, // IStreamListener consumer + nsnull); // ISupports context if (NS_SUCCEEDED(rv)) { gKeepRunning = 1; diff --git a/mozilla/gfx/src/nsImageNetContextAsync.cpp b/mozilla/gfx/src/nsImageNetContextAsync.cpp index c679f95d89d..cc2a2699861 100644 --- a/mozilla/gfx/src/nsImageNetContextAsync.cpp +++ b/mozilla/gfx/src/nsImageNetContextAsync.cpp @@ -701,7 +701,7 @@ ImageNetContextImpl::GetURL (ilIURL * aURL, nsCOMPtr<nsISupports> loadContext (do_QueryReferent(mLoadContext)); nsCOMPtr<nsILoadGroup> group (do_GetInterface(loadContext)); - rv = NS_OpenURI(getter_AddRefs(channel), nsurl, group); + rv = NS_OpenURI(getter_AddRefs(channel), nsurl, nsnull, group); if (NS_FAILED(rv)) goto error; nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(channel); @@ -767,7 +767,7 @@ ImageNetContextImpl::GetURL (ilIURL * aURL, rv = pURILoader->OpenURI(channel, loadCmd, nsnull /* window target */, window); } - // rv = channel->AsyncRead(0, -1, nsnull, ic); + // rv = channel->AsyncRead(ic, nsnull); if (NS_FAILED(rv)) goto error; } return mRequests->AppendElement((void *)ic) ? 0 : -1; diff --git a/mozilla/gfx/src/nsImageNetContextSync.cpp b/mozilla/gfx/src/nsImageNetContextSync.cpp index fed4fa96881..32d013fc522 100644 --- a/mozilla/gfx/src/nsImageNetContextSync.cpp +++ b/mozilla/gfx/src/nsImageNetContextSync.cpp @@ -195,11 +195,8 @@ ImageNetContextSyncImpl::GetURL(ilIURL* aURL, rv = url->QueryInterface(NS_GET_IID(nsIURI), (void**)&uri); if (NS_FAILED(rv)) return -1; - // XXX NECKO what verb? what event sink getter nsIChannel *channel = nsnull; - rv = service->NewChannelFromURI("load", uri, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, 0, 0, - &channel); + rv = service->NewChannelFromURI(uri, &channel); NS_RELEASE(uri); if (NS_FAILED(rv)) return -1; @@ -219,7 +216,7 @@ ImageNetContextSyncImpl::GetURL(ilIURL* aURL, aContentType = nsCRT::strdup("unknown"); } - rv = channel->OpenInputStream(0, -1, &stream); + rv = channel->OpenInputStream(&stream); NS_RELEASE(channel); if (NS_SUCCEEDED(rv)) { diff --git a/mozilla/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/htmlparser/src/nsExpatTokenizer.cpp index 6469b7d3ebd..8f0918da293 100644 --- a/mozilla/htmlparser/src/nsExpatTokenizer.cpp +++ b/mozilla/htmlparser/src/nsExpatTokenizer.cpp @@ -234,9 +234,9 @@ void nsExpatTokenizer::GetLine(const char* aSourceBuffer, PRUint32 aLength, { /* Figure out the line inside aSourceBuffer that contains character specified by aOffset. Copy it into aLine. */ - PR_ASSERT(aOffset > 0 && aOffset < aLength); + NS_ASSERTION(aOffset > 0 && aOffset < aLength, "?"); /* Assert that the byteIndex and the length of the buffer is even */ - PR_ASSERT(aOffset % 2 == 0 && aLength % 2 == 0); + NS_ASSERTION(aOffset % 2 == 0 && aLength % 2 == 0, "?"); PRUnichar* start = (PRUnichar* ) &aSourceBuffer[aOffset]; /* Will try to find the start of the line */ PRUnichar* end = (PRUnichar* ) &aSourceBuffer[aOffset]; /* Will try to find the end of the line */ PRUint32 startIndex = aOffset / sizeof(PRUnichar); /* Track the position of the 'start' pointer into the buffer */ @@ -269,7 +269,7 @@ void nsExpatTokenizer::GetLine(const char* aSourceBuffer, PRUint32 aLength, aLine.Append(""); } else { - PR_ASSERT(endIndex - startIndex >= sizeof(PRUnichar)); + NS_ASSERTION(endIndex - startIndex >= sizeof(PRUnichar), "?"); /* At this point, there are two cases. Either the error is on the first line or on subsequent lines. If the error is on the first line, startIndex will decrement all the way to zero. If not, startIndex will decrement to the position of the @@ -320,7 +320,7 @@ void nsExpatTokenizer::PushXMLErrorToken(const char *aBuffer, PRUint32 aLength, nsresult nsExpatTokenizer::ParseXMLBuffer(const char* aBuffer, PRUint32 aLength, PRBool aIsFinal) { nsresult result=NS_OK; - PR_ASSERT((aBuffer && aLength) || (aBuffer == nsnull && aLength == 0)); + NS_ASSERTION((aBuffer && aLength) || (aBuffer == nsnull && aLength == 0), "?"); if (mExpatParser) { nsCOMPtr<nsExpatTokenizer> me=this; diff --git a/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp b/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp index ea1d37e24c6..fbd5a5e7b21 100644 --- a/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp +++ b/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp @@ -441,7 +441,7 @@ void nsHTMLContentSinkStream::WriteAttributes(const nsIParserNode& aNode) if (mURI) { nsAutoString absURI; - if (NS_SUCCEEDED(NS_MakeAbsoluteURI(value, mURI, absURI)) + if (NS_SUCCEEDED(NS_MakeAbsoluteURI(absURI, value, mURI)) && !absURI.IsEmpty()) value = absURI; } diff --git a/mozilla/htmlparser/tests/grabpage/grabpage.cpp b/mozilla/htmlparser/tests/grabpage/grabpage.cpp index b22cc8eca02..4b42cfac0d7 100644 --- a/mozilla/htmlparser/tests/grabpage/grabpage.cpp +++ b/mozilla/htmlparser/tests/grabpage/grabpage.cpp @@ -237,7 +237,7 @@ PageGrabber::Grab(const nsString& aURL) if(copier) { NS_ADDREF(copier); - rv = channel->AsyncRead(0, -1, nsnull, copier); + rv = channel->AsyncRead(copier, nsnull); if (NS_OK != rv) { NS_RELEASE(copier); diff --git a/mozilla/layout/base/src/nsGenericElement.cpp b/mozilla/layout/base/src/nsGenericElement.cpp index 617d01cc039..0bab7cb295b 100644 --- a/mozilla/layout/base/src/nsGenericElement.cpp +++ b/mozilla/layout/base/src/nsGenericElement.cpp @@ -1449,7 +1449,7 @@ nsGenericElement::TriggerLink(nsIPresContext* aPresContext, // Resolve url to an absolute url nsAutoString absURLSpec; if (nsnull != aBaseURL) { - rv = NS_MakeAbsoluteURI(aURLSpec, aBaseURL, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, aURLSpec, aBaseURL); if (NS_FAILED(rv)) return rv; } else { diff --git a/mozilla/layout/base/src/nsPluginViewer.cpp b/mozilla/layout/base/src/nsPluginViewer.cpp index 30b9257ec7b..c4c9e0fe3fd 100644 --- a/mozilla/layout/base/src/nsPluginViewer.cpp +++ b/mozilla/layout/base/src/nsPluginViewer.cpp @@ -802,7 +802,7 @@ NS_IMETHODIMP pluginInstanceOwner :: GetURL(const char *aURL, const char *aTarge { // Create an absolute URL char* absURIStr; - rv = NS_MakeAbsoluteURI(aURL, uri, &absURIStr); + rv = NS_MakeAbsoluteURI(&absURIStr, aURL, uri); nsAutoString fullurl(absURIStr); nsCRT::free(absURIStr); diff --git a/mozilla/layout/generic/nsFrameFrame.cpp b/mozilla/layout/generic/nsFrameFrame.cpp index 9f2287d4628..53e0c1c4a42 100644 --- a/mozilla/layout/generic/nsFrameFrame.cpp +++ b/mozilla/layout/generic/nsFrameFrame.cpp @@ -653,7 +653,7 @@ void TempMakeAbsURL(nsIContent* aContent, nsString& aRelURL, nsString& aAbsURL) } nsString empty; - nsresult rv = NS_MakeAbsoluteURI(aRelURL, baseURL, aAbsURL); + nsresult rv = NS_MakeAbsoluteURI(aAbsURL, aRelURL, baseURL); NS_ASSERTION(NS_SUCCEEDED(rv), "XXX make this function return an nsresult, like it should!"); NS_IF_RELEASE(baseURL); } @@ -904,10 +904,12 @@ nsHTMLFrameInnerFrame::Reflow(nsIPresContext* aPresContext, if (NS_SUCCEEDED(rv)) rv = securityManager->CheckLoadURI(baseURI, newURI, PR_FALSE); + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to load URL"); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(mSubShell)); NS_ENSURE_TRUE(webNav, NS_ERROR_FAILURE); - webNav->LoadURI(absURL.GetUnicode()); // URL string with a default nsnull value for post Data + rv = webNav->LoadURI(absURL.GetUnicode()); // URL string with a default nsnull value for post Data + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to load URL"); } } } diff --git a/mozilla/layout/generic/nsImageFrame.cpp b/mozilla/layout/generic/nsImageFrame.cpp index 778257704f6..c7435c2d537 100644 --- a/mozilla/layout/generic/nsImageFrame.cpp +++ b/mozilla/layout/generic/nsImageFrame.cpp @@ -768,7 +768,7 @@ nsImageFrame::HandleEvent(nsIPresContext* aPresContext, // element to provide the basis for the destination url. nsAutoString src; if (GetAnchorHREF(src)) { - NS_MakeAbsoluteURI(src, baseURL, absURL); + NS_MakeAbsoluteURI(absURL, src, baseURL); NS_IF_RELEASE(baseURL); // XXX if the mouse is over/clicked in the border/padding area diff --git a/mozilla/layout/generic/nsImageMap.cpp b/mozilla/layout/generic/nsImageMap.cpp index d38e6058928..e6729f24582 100644 --- a/mozilla/layout/generic/nsImageMap.cpp +++ b/mozilla/layout/generic/nsImageMap.cpp @@ -916,7 +916,7 @@ nsImageMap::IsInside(nscoord aX, nscoord aY, nsAutoString href; area->GetHREF(href); - NS_MakeAbsoluteURI(href, baseUri, aAbsURL); + NS_MakeAbsoluteURI(aAbsURL, href, baseUri); NS_RELEASE(baseUri); } diff --git a/mozilla/layout/generic/nsObjectFrame.cpp b/mozilla/layout/generic/nsObjectFrame.cpp index 9e2cb51c412..0ac7705bdae 100644 --- a/mozilla/layout/generic/nsObjectFrame.cpp +++ b/mozilla/layout/generic/nsObjectFrame.cpp @@ -1750,7 +1750,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge mOwner->GetFullURL(baseURL); // Create an absolute URL - rv = NS_MakeAbsoluteURI(uniurl, baseURL, fullurl); + rv = NS_MakeAbsoluteURI(fullurl, uniurl, baseURL); NS_IF_RELEASE(baseURL); diff --git a/mozilla/layout/html/base/src/nsHTMLImageLoader.cpp b/mozilla/layout/html/base/src/nsHTMLImageLoader.cpp index 6f266720ec3..7501f367c9c 100644 --- a/mozilla/layout/html/base/src/nsHTMLImageLoader.cpp +++ b/mozilla/layout/html/base/src/nsHTMLImageLoader.cpp @@ -84,7 +84,7 @@ nsHTMLImageLoader::SetURL(const nsString& aNewSpec) if (mBaseURL && !aNewSpec.Equals("")) { nsString empty; nsresult rv; - rv = NS_MakeAbsoluteURI(mURLSpec, mBaseURL, mURL); + rv = NS_MakeAbsoluteURI(mURL, mURLSpec, mBaseURL); if (NS_FAILED(rv)) { mURL = mURLSpec; } diff --git a/mozilla/layout/html/base/src/nsImageFrame.cpp b/mozilla/layout/html/base/src/nsImageFrame.cpp index 778257704f6..c7435c2d537 100644 --- a/mozilla/layout/html/base/src/nsImageFrame.cpp +++ b/mozilla/layout/html/base/src/nsImageFrame.cpp @@ -768,7 +768,7 @@ nsImageFrame::HandleEvent(nsIPresContext* aPresContext, // element to provide the basis for the destination url. nsAutoString src; if (GetAnchorHREF(src)) { - NS_MakeAbsoluteURI(src, baseURL, absURL); + NS_MakeAbsoluteURI(absURL, src, baseURL); NS_IF_RELEASE(baseURL); // XXX if the mouse is over/clicked in the border/padding area diff --git a/mozilla/layout/html/base/src/nsImageMap.cpp b/mozilla/layout/html/base/src/nsImageMap.cpp index d38e6058928..e6729f24582 100644 --- a/mozilla/layout/html/base/src/nsImageMap.cpp +++ b/mozilla/layout/html/base/src/nsImageMap.cpp @@ -916,7 +916,7 @@ nsImageMap::IsInside(nscoord aX, nscoord aY, nsAutoString href; area->GetHREF(href); - NS_MakeAbsoluteURI(href, baseUri, aAbsURL); + NS_MakeAbsoluteURI(aAbsURL, href, baseUri); NS_RELEASE(baseUri); } diff --git a/mozilla/layout/html/base/src/nsObjectFrame.cpp b/mozilla/layout/html/base/src/nsObjectFrame.cpp index 9e2cb51c412..0ac7705bdae 100644 --- a/mozilla/layout/html/base/src/nsObjectFrame.cpp +++ b/mozilla/layout/html/base/src/nsObjectFrame.cpp @@ -1750,7 +1750,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge mOwner->GetFullURL(baseURL); // Create an absolute URL - rv = NS_MakeAbsoluteURI(uniurl, baseURL, fullurl); + rv = NS_MakeAbsoluteURI(fullurl, uniurl, baseURL); NS_IF_RELEASE(baseURL); diff --git a/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp b/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp index be24871a395..34983b9a50b 100644 --- a/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp +++ b/mozilla/layout/html/content/src/nsGenericHTMLElement.cpp @@ -2673,7 +2673,7 @@ nsGenericHTMLElement::MapBackgroundAttributesInto(const nsIHTMLMappedAttributes* aAttributes->GetAttribute(nsHTMLAtoms::_baseHref, baseHref); nsGenericHTMLElement::GetBaseURL(baseHref, doc, getter_AddRefs(docURL)); - rv = NS_MakeAbsoluteURI(spec, docURL, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, spec, docURL); if (NS_SUCCEEDED(rv)) { nsStyleColor* color = (nsStyleColor*) aContext->GetMutableStyleData(eStyleStruct_Color); diff --git a/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp b/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp index 3cec6298f27..05f31cd7ce9 100644 --- a/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLAnchorElement.cpp @@ -375,7 +375,7 @@ nsHTMLAnchorElement::GetHref(nsString& aValue) if (nsnull != baseURL) { // Get absolute URL. - rv = NS_MakeAbsoluteURI(relURLSpec, baseURL, aValue); + rv = NS_MakeAbsoluteURI(aValue, relURLSpec, baseURL); } else { // Absolute URL is same as relative URL. diff --git a/mozilla/layout/html/content/src/nsHTMLImageElement.cpp b/mozilla/layout/html/content/src/nsHTMLImageElement.cpp index 2d3afb9d49d..df045c533c5 100644 --- a/mozilla/layout/html/content/src/nsHTMLImageElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLImageElement.cpp @@ -576,7 +576,7 @@ nsHTMLImageElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, result = GetCallerSourceURL(aContext, getter_AddRefs(base)); if (NS_SUCCEEDED(result)) { - result = NS_MakeAbsoluteURI(src, base, url); + result = NS_MakeAbsoluteURI(url, src, base); if (NS_SUCCEEDED(result)) { result = SetSrcInner(base, url); } @@ -714,7 +714,7 @@ nsHTMLImageElement::GetSrc(nsString& aSrc) if (nsnull != baseURL) { // Get absolute URL. - rv = NS_MakeAbsoluteURI(relURLSpec, baseURL, aSrc); + rv = NS_MakeAbsoluteURI(aSrc, relURLSpec, baseURL); } else { // Absolute URL is same as relative URL. @@ -763,7 +763,7 @@ nsHTMLImageElement::SetSrcInner(nsIURI* aBaseURL, const nsString& aSrc) nsAutoString url; if (nsnull != aBaseURL) { - result = NS_MakeAbsoluteURI(aSrc, aBaseURL, url); + result = NS_MakeAbsoluteURI(url, aSrc, aBaseURL); if (NS_FAILED(result)) { url = aSrc; } diff --git a/mozilla/layout/html/document/src/nsFrameFrame.cpp b/mozilla/layout/html/document/src/nsFrameFrame.cpp index 9f2287d4628..53e0c1c4a42 100644 --- a/mozilla/layout/html/document/src/nsFrameFrame.cpp +++ b/mozilla/layout/html/document/src/nsFrameFrame.cpp @@ -653,7 +653,7 @@ void TempMakeAbsURL(nsIContent* aContent, nsString& aRelURL, nsString& aAbsURL) } nsString empty; - nsresult rv = NS_MakeAbsoluteURI(aRelURL, baseURL, aAbsURL); + nsresult rv = NS_MakeAbsoluteURI(aAbsURL, aRelURL, baseURL); NS_ASSERTION(NS_SUCCEEDED(rv), "XXX make this function return an nsresult, like it should!"); NS_IF_RELEASE(baseURL); } @@ -904,10 +904,12 @@ nsHTMLFrameInnerFrame::Reflow(nsIPresContext* aPresContext, if (NS_SUCCEEDED(rv)) rv = securityManager->CheckLoadURI(baseURI, newURI, PR_FALSE); + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to load URL"); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(mSubShell)); NS_ENSURE_TRUE(webNav, NS_ERROR_FAILURE); - webNav->LoadURI(absURL.GetUnicode()); // URL string with a default nsnull value for post Data + rv = webNav->LoadURI(absURL.GetUnicode()); // URL string with a default nsnull value for post Data + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to load URL"); } } } diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp index 062060f6347..09b450bcf8a 100644 --- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp @@ -1731,7 +1731,7 @@ nsHTMLDocument::OpenCommon(nsIURI* aSourceURL) nsCOMPtr<nsIChannel> channel; nsCOMPtr<nsILoadGroup> group = do_QueryReferent(mDocumentLoadGroup); - result = NS_OpenURI(getter_AddRefs(channel), aSourceURL, group); + result = NS_OpenURI(getter_AddRefs(channel), aSourceURL, nsnull, group); if (NS_FAILED(result)) return result; result = Reset(channel, group); if (NS_FAILED(result)) return result; diff --git a/mozilla/layout/html/forms/src/nsFormFrame.cpp b/mozilla/layout/html/forms/src/nsFormFrame.cpp index 0d3a769cb30..ed82f805eb0 100644 --- a/mozilla/layout/html/forms/src/nsFormFrame.cpp +++ b/mozilla/layout/html/forms/src/nsFormFrame.cpp @@ -831,7 +831,7 @@ nsFormFrame::OnSubmit(nsIPresContext* aPresContext, nsIFrame* aFrame) } } nsAutoString absURLSpec; - result = NS_MakeAbsoluteURI(href, docURL, absURLSpec); + result = NS_MakeAbsoluteURI(absURLSpec, href, docURL); if (NS_FAILED(result)) return result; // Now pass on absolute url to the click handler @@ -841,7 +841,7 @@ nsFormFrame::OnSubmit(nsIPresContext* aPresContext, nsIFrame* aFrame) char* postBuffer = data.ToNewCString(); if (isURLEncoded) { - rv = NS_NewPostDataStream(!isURLEncoded, postBuffer, 0, &postDataStream); + rv = NS_NewPostDataStream(&postDataStream, !isURLEncoded, postBuffer, 0); } else { // Cut-and-paste of NS_NewPostDataStream NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); diff --git a/mozilla/layout/html/style/src/nsCSSParser.cpp b/mozilla/layout/html/style/src/nsCSSParser.cpp index 8a77fd59fb4..e1596456c0b 100644 --- a/mozilla/layout/html/style/src/nsCSSParser.cpp +++ b/mozilla/layout/html/style/src/nsCSSParser.cpp @@ -2531,7 +2531,7 @@ PRBool CSSParserImpl::ParseURL(PRInt32& aErrorCode, nsCSSValue& aValue) nsCOMPtr<nsIURI> base; rv = mURL->Clone(getter_AddRefs(base)); if (NS_SUCCEEDED(rv)) { - rv = NS_MakeAbsoluteURI(tk->mIdent, base, absURL); + rv = NS_MakeAbsoluteURI(absURL, tk->mIdent, base); } if (NS_FAILED(rv)) { absURL = tk->mIdent; diff --git a/mozilla/layout/html/style/src/nsCSSStyleSheet.cpp b/mozilla/layout/html/style/src/nsCSSStyleSheet.cpp index 1cce66bcbf4..5c1d752a598 100644 --- a/mozilla/layout/html/style/src/nsCSSStyleSheet.cpp +++ b/mozilla/layout/html/style/src/nsCSSStyleSheet.cpp @@ -441,6 +441,9 @@ public: nsINameSpace* mNameSpace; PRInt32 mDefaultNameSpaceID; + + static nsIIOService* gIOService; + static nsrefcnt gRefcnt; }; @@ -872,6 +875,9 @@ static PRBool SetStyleSheetReference(nsISupports* aElement, void* aSheet) return PR_TRUE; } +nsIIOService* CSSStyleSheetInner::gIOService = nsnull; +nsrefcnt CSSStyleSheetInner::gRefcnt = 0; + CSSStyleSheetInner::CSSStyleSheetInner(nsICSSStyleSheet* aParentSheet) : mSheets(), mURL(nsnull), @@ -880,6 +886,13 @@ CSSStyleSheetInner::CSSStyleSheetInner(nsICSSStyleSheet* aParentSheet) mDefaultNameSpaceID(kNameSpaceID_None) { MOZ_COUNT_CTOR(CSSStyleSheetInner); + if (gRefcnt++ == 0) { + nsresult rv; + rv = nsServiceManager::GetService(kIOServiceCID, + NS_GET_IID(nsIIOService), + (nsISupports**)&gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't get nsIOService"); + } mSheets.AppendElement(aParentSheet); } @@ -905,6 +918,13 @@ CSSStyleSheetInner::CSSStyleSheetInner(CSSStyleSheetInner& aCopy, mDefaultNameSpaceID(aCopy.mDefaultNameSpaceID) { MOZ_COUNT_CTOR(CSSStyleSheetInner); + if (gRefcnt++ == 0) { + nsresult rv; + rv = nsServiceManager::GetService(kIOServiceCID, + NS_GET_IID(nsIIOService), + (nsISupports**)&gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't get nsIOService"); + } mSheets.AppendElement(aParentSheet); NS_IF_ADDREF(mURL); if (aCopy.mOrderedRules) { @@ -929,6 +949,12 @@ CSSStyleSheetInner::~CSSStyleSheetInner(void) NS_RELEASE(mOrderedRules); } NS_IF_RELEASE(mNameSpace); + if (--gRefcnt == 0) { + nsresult rv; + rv = nsServiceManager::ReleaseService(kIOServiceCID, gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't release nsIOService"); + gIOService = nsnull; + } } CSSStyleSheetInner* @@ -2523,7 +2549,8 @@ static PRBool SelectorMatches(nsIPresContext* aPresContext, rv = docURL->QueryInterface(NS_GET_IID(nsIURI), (void**)&baseUri); if (NS_FAILED(rv)) return PR_FALSE; - NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + (void)NS_MakeAbsoluteURI(absURLSpec, href, baseUri, CSSStyleSheetInner::gIOService); + // XXX what about failure of NS_MakeAbsoluteURI here? NS_RELEASE(baseUri); NS_IF_RELEASE(docURL); diff --git a/mozilla/layout/html/style/src/nsHTMLStyleSheet.cpp b/mozilla/layout/html/style/src/nsHTMLStyleSheet.cpp index 79b4f293c72..506af22d0f5 100644 --- a/mozilla/layout/html/style/src/nsHTMLStyleSheet.cpp +++ b/mozilla/layout/html/style/src/nsHTMLStyleSheet.cpp @@ -737,7 +737,7 @@ HTMLStyleSheetImpl::RulesMatching(nsIPresContext* aPresContext, rv = docURL->QueryInterface(NS_GET_IID(nsIURI), (void**)&baseUri); if (NS_FAILED(rv)) return 0; - rv = NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, href, baseUri); NS_RELEASE(baseUri); NS_IF_RELEASE(docURL); diff --git a/mozilla/layout/style/nsCSSParser.cpp b/mozilla/layout/style/nsCSSParser.cpp index 8a77fd59fb4..e1596456c0b 100644 --- a/mozilla/layout/style/nsCSSParser.cpp +++ b/mozilla/layout/style/nsCSSParser.cpp @@ -2531,7 +2531,7 @@ PRBool CSSParserImpl::ParseURL(PRInt32& aErrorCode, nsCSSValue& aValue) nsCOMPtr<nsIURI> base; rv = mURL->Clone(getter_AddRefs(base)); if (NS_SUCCEEDED(rv)) { - rv = NS_MakeAbsoluteURI(tk->mIdent, base, absURL); + rv = NS_MakeAbsoluteURI(absURL, tk->mIdent, base); } if (NS_FAILED(rv)) { absURL = tk->mIdent; diff --git a/mozilla/layout/style/nsCSSStyleSheet.cpp b/mozilla/layout/style/nsCSSStyleSheet.cpp index 1cce66bcbf4..5c1d752a598 100644 --- a/mozilla/layout/style/nsCSSStyleSheet.cpp +++ b/mozilla/layout/style/nsCSSStyleSheet.cpp @@ -441,6 +441,9 @@ public: nsINameSpace* mNameSpace; PRInt32 mDefaultNameSpaceID; + + static nsIIOService* gIOService; + static nsrefcnt gRefcnt; }; @@ -872,6 +875,9 @@ static PRBool SetStyleSheetReference(nsISupports* aElement, void* aSheet) return PR_TRUE; } +nsIIOService* CSSStyleSheetInner::gIOService = nsnull; +nsrefcnt CSSStyleSheetInner::gRefcnt = 0; + CSSStyleSheetInner::CSSStyleSheetInner(nsICSSStyleSheet* aParentSheet) : mSheets(), mURL(nsnull), @@ -880,6 +886,13 @@ CSSStyleSheetInner::CSSStyleSheetInner(nsICSSStyleSheet* aParentSheet) mDefaultNameSpaceID(kNameSpaceID_None) { MOZ_COUNT_CTOR(CSSStyleSheetInner); + if (gRefcnt++ == 0) { + nsresult rv; + rv = nsServiceManager::GetService(kIOServiceCID, + NS_GET_IID(nsIIOService), + (nsISupports**)&gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't get nsIOService"); + } mSheets.AppendElement(aParentSheet); } @@ -905,6 +918,13 @@ CSSStyleSheetInner::CSSStyleSheetInner(CSSStyleSheetInner& aCopy, mDefaultNameSpaceID(aCopy.mDefaultNameSpaceID) { MOZ_COUNT_CTOR(CSSStyleSheetInner); + if (gRefcnt++ == 0) { + nsresult rv; + rv = nsServiceManager::GetService(kIOServiceCID, + NS_GET_IID(nsIIOService), + (nsISupports**)&gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't get nsIOService"); + } mSheets.AppendElement(aParentSheet); NS_IF_ADDREF(mURL); if (aCopy.mOrderedRules) { @@ -929,6 +949,12 @@ CSSStyleSheetInner::~CSSStyleSheetInner(void) NS_RELEASE(mOrderedRules); } NS_IF_RELEASE(mNameSpace); + if (--gRefcnt == 0) { + nsresult rv; + rv = nsServiceManager::ReleaseService(kIOServiceCID, gIOService); + NS_ASSERTION(NS_SUCCEEDED(rv), "can't release nsIOService"); + gIOService = nsnull; + } } CSSStyleSheetInner* @@ -2523,7 +2549,8 @@ static PRBool SelectorMatches(nsIPresContext* aPresContext, rv = docURL->QueryInterface(NS_GET_IID(nsIURI), (void**)&baseUri); if (NS_FAILED(rv)) return PR_FALSE; - NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + (void)NS_MakeAbsoluteURI(absURLSpec, href, baseUri, CSSStyleSheetInner::gIOService); + // XXX what about failure of NS_MakeAbsoluteURI here? NS_RELEASE(baseUri); NS_IF_RELEASE(docURL); diff --git a/mozilla/layout/style/nsHTMLStyleSheet.cpp b/mozilla/layout/style/nsHTMLStyleSheet.cpp index 79b4f293c72..506af22d0f5 100644 --- a/mozilla/layout/style/nsHTMLStyleSheet.cpp +++ b/mozilla/layout/style/nsHTMLStyleSheet.cpp @@ -737,7 +737,7 @@ HTMLStyleSheetImpl::RulesMatching(nsIPresContext* aPresContext, rv = docURL->QueryInterface(NS_GET_IID(nsIURI), (void**)&baseUri); if (NS_FAILED(rv)) return 0; - rv = NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, href, baseUri); NS_RELEASE(baseUri); NS_IF_RELEASE(docURL); diff --git a/mozilla/layout/xbl/src/nsXBLService.cpp b/mozilla/layout/xbl/src/nsXBLService.cpp index 9c8d0781ae7..567ccb1c04e 100644 --- a/mozilla/layout/xbl/src/nsXBLService.cpp +++ b/mozilla/layout/xbl/src/nsXBLService.cpp @@ -487,7 +487,7 @@ nsXBLService::FetchBindingDocument(nsIURI* aURI, nsIDocument** aResult) // Now do a blocking synchronous parse of the file. nsCOMPtr<nsIInputStream> in; PRUint32 sourceOffset = 0; - rv = channel->OpenInputStream(0, -1, getter_AddRefs(in)); + rv = channel->OpenInputStream(getter_AddRefs(in)); // If we couldn't open the channel, then just return. if (NS_FAILED(rv)) return NS_OK; diff --git a/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.cpp b/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.cpp index e1e5cfc6a8c..8836b8f5d5f 100644 --- a/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.cpp +++ b/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.cpp @@ -155,14 +155,7 @@ NS_IMETHODIMP nsAddbookProtocolHandler::GenerateHTMLOutputChannel( char *aHtmlOutput, PRInt32 aHtmlOutputSize, nsIAddbookUrl *addbookUrl, - const char *verb, nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, nsIChannel **_retval) { nsresult rv = NS_OK; @@ -180,10 +173,7 @@ nsAddbookProtocolHandler::GenerateHTMLOutputChannel( char *aHtmlOutput, inStr = do_QueryInterface(s, &rv); if (NS_FAILED(rv)) return rv; - rv = NS_NewInputStreamChannel(aURI, "text/html", - aHtmlOutputSize, inStr, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, &channel); + rv = NS_NewInputStreamChannel(&channel, aURI, inStr, "text/html", aHtmlOutputSize); if (NS_FAILED(rv)) return rv; @@ -192,15 +182,7 @@ nsAddbookProtocolHandler::GenerateHTMLOutputChannel( char *aHtmlOutput, } NS_IMETHODIMP -nsAddbookProtocolHandler::NewChannel( const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **_retval) +nsAddbookProtocolHandler::NewChannel(nsIURI *aURI, nsIChannel **_retval) { nsresult rv = NS_OK; char *outBuf = nsnull; @@ -229,16 +211,12 @@ nsAddbookProtocolHandler::NewChannel( const char *verb, { char *eMsg = "Unsupported format/operation requested for \"addbook:\" URL."; PRInt32 eSize = nsCRT::strlen(eMsg); - rv = GenerateHTMLOutputChannel(eMsg, eSize, addbookUrl, verb, aURI, aLoadGroup, - notificationCallbacks, loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, _retval); + rv = GenerateHTMLOutputChannel(eMsg, eSize, addbookUrl, aURI, _retval); break; } else { - rv = GenerateHTMLOutputChannel(outBuf, nsCRT::strlen(outBuf), addbookUrl, verb, aURI, aLoadGroup, - notificationCallbacks, loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, _retval); + rv = GenerateHTMLOutputChannel(outBuf, nsCRT::strlen(outBuf), addbookUrl, aURI, _retval); PR_FREEIF(outBuf); } break; @@ -254,9 +232,7 @@ nsAddbookProtocolHandler::NewChannel( const char *verb, char *eMsg = "Unsupported format/operation requested for \"addbook:\" URL."; PRInt32 eSize = nsCRT::strlen(eMsg); - rv = GenerateHTMLOutputChannel(eMsg, eSize, addbookUrl, verb, aURI, aLoadGroup, - notificationCallbacks, loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, _retval); + rv = GenerateHTMLOutputChannel(eMsg, eSize, addbookUrl, aURI, _retval); break; } diff --git a/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.h b/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.h index b0a0881b494..46ca49b9258 100644 --- a/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.h +++ b/mozilla/mailnews/addrbook/src/nsAddbookProtocolHandler.h @@ -56,14 +56,7 @@ private: NS_METHOD GenerateHTMLOutputChannel(char *aHtmlOutput, PRInt32 aHtmlOutputSize, nsIAddbookUrl *addbookUrl, - const char *verb, nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, nsIChannel **_retval); NS_METHOD GeneratePrintOutput(nsIAddbookUrl *addbookUrl, diff --git a/mozilla/mailnews/base/src/nsMessenger.cpp b/mozilla/mailnews/base/src/nsMessenger.cpp index 556df0e0a34..51a9081d21f 100644 --- a/mozilla/mailnews/base/src/nsMessenger.cpp +++ b/mozilla/mailnews/base/src/nsMessenger.cpp @@ -588,16 +588,11 @@ nsMessenger::OpenAttachment(const char * url, const char * displayName, } { aListener->m_channel = null_nsCOMPtr(); - rv = NS_NewInputStreamChannel(aURL, - nsnull, // contentType - -1, // contentLength + rv = NS_NewInputStreamChannel(getter_AddRefs(aListener->m_channel), + aURL, nsnull, // inputStream - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(aListener->m_channel)); + nsnull, // contentType + -1); if (NS_FAILED(rv)) goto done; from = MESSAGE_RFC822; @@ -816,16 +811,11 @@ nsMessenger::SaveAs(const char* url, PRBool asFile, nsIMsgIdentity* identity, ns if (NS_FAILED(rv)) goto done; aListener->m_channel = null_nsCOMPtr(); - rv = NS_NewInputStreamChannel(aURL, - nsnull, // contentType - -1, // contentLength + rv = NS_NewInputStreamChannel(getter_AddRefs(aListener->m_channel), + aURL, nsnull, // inputStream - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(aListener->m_channel)); + nsnull, // contentType + -1); // contentLength if (NS_FAILED(rv)) goto done; aListener->m_outputFormat = saveAsFileType == 1 ? TEXT_HTML : TEXT_PLAIN; @@ -1612,6 +1602,11 @@ nsSaveAsListener::OnStopRunningUrl(nsIURI* url, nsresult exitCode) m_fileSpec->Flush(); m_fileSpec->CloseStream(); if (NS_FAILED(rv)) goto done; + NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv); + if (NS_FAILED(rv)) goto done; + nsCOMPtr<nsIRDFResource> res; + rv = rdf->GetResource(m_templateUri, getter_AddRefs(res)); + if (NS_FAILED(rv)) goto done; if (m_templateUri) { // ** save as template goes here NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv); if (NS_FAILED(rv)) goto done; diff --git a/mozilla/mailnews/base/src/nsMsgWindow.cpp b/mozilla/mailnews/base/src/nsMsgWindow.cpp index d1bc4b03d34..7ef30ee87e7 100644 --- a/mozilla/mailnews/base/src/nsMsgWindow.cpp +++ b/mozilla/mailnews/base/src/nsMsgWindow.cpp @@ -246,7 +246,7 @@ NS_IMETHODIMP nsMsgWindow::StopUrls() { docLoader->GetLoadGroup(getter_AddRefs(loadGroup)); if (loadGroup) - loadGroup->Cancel(); + loadGroup->Cancel(NS_BINDING_ABORTED); } return NS_OK; } diff --git a/mozilla/mailnews/base/util/nsMsgProtocol.cpp b/mozilla/mailnews/base/util/nsMsgProtocol.cpp index 8ccb697859e..ba600df2c2a 100644 --- a/mozilla/mailnews/base/util/nsMsgProtocol.cpp +++ b/mozilla/mailnews/base/util/nsMsgProtocol.cpp @@ -37,7 +37,7 @@ static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID); static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); NS_IMPL_ISUPPORTS3(nsMsgProtocol, nsIStreamListener, nsIStreamObserver, nsIChannel) -nsMsgProtocol::nsMsgProtocol(nsIURI * aURL, nsIURI* originalURI) +nsMsgProtocol::nsMsgProtocol(nsIURI * aURL) { NS_INIT_REFCNT(); m_flags = 0; @@ -48,7 +48,6 @@ nsMsgProtocol::nsMsgProtocol(nsIURI * aURL, nsIURI* originalURI) m_tempMsgFileSpec = nsSpecialSystemDirectory(nsSpecialSystemDirectory::OS_TemporaryDirectory); m_tempMsgFileSpec += "tempMessage.eml"; m_url = aURL; - m_originalUrl = originalURI ? originalURI : aURL; } nsMsgProtocol::~nsMsgProtocol() @@ -102,20 +101,18 @@ nsresult nsMsgProtocol::OpenFileSocket(nsIURI * aURL, const nsFileSpec * aFileSp aURL->GetPath(getter_Copies(filePath)); char * urlSpec = PR_smprintf("file://%s", (const char *) filePath); - rv = netService->NewChannel("Load", urlSpec, + rv = netService->NewChannel(urlSpec, nsnull, // null base URI - m_loadGroup, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, getter_AddRefs(m_channel)); PR_FREEIF(urlSpec); if (NS_SUCCEEDED(rv) && m_channel) { - m_socketIsOpen = PR_FALSE; - // rv = SetupTransportState(); + rv = m_channel->SetLoadGroup(m_loadGroup); + if (NS_SUCCEEDED(rv)) { + m_socketIsOpen = PR_FALSE; + // rv = SetupTransportState(); + } } } @@ -128,7 +125,7 @@ nsresult nsMsgProtocol::SetupTransportState() if (!m_socketIsOpen && m_channel) { - rv = m_channel->OpenOutputStream(0 /* start position */, getter_AddRefs(m_outputStream)); + rv = m_channel->OpenOutputStream(getter_AddRefs(m_outputStream)); NS_ASSERTION(NS_SUCCEEDED(rv), "unable to create an output stream"); // we want to open the stream @@ -147,7 +144,7 @@ nsresult nsMsgProtocol::CloseSocket() // we need to call Cancel so that we remove the socket transport from the mActiveTransportList. see bug #30648 if (m_channel) { - rv = m_channel->Cancel(); + rv = m_channel->Cancel(NS_BINDING_ABORTED); } m_channel = null_nsCOMPtr(); @@ -267,24 +264,32 @@ nsresult nsMsgProtocol::LoadUrl(nsIURI * aURL, nsISupports * aConsumer) { rv = aMsgUrl->SetUrlState(PR_TRUE, NS_OK); // set the url as a url currently being run... - // if the url is given a stream consumer then we should use it to forward calls to... - if (!m_channelListener && aConsumer) // if we don't have a registered listener already - { - m_channelListener = do_QueryInterface(aConsumer); - if (!m_channelContext) - m_channelContext = do_QueryInterface(aURL); - } + // if the url is given a stream consumer then we should use it to forward calls to... + if (!m_channelListener && aConsumer) // if we don't have a registered listener already + { + m_channelListener = do_QueryInterface(aConsumer); + if (!m_channelContext) + m_channelContext = do_QueryInterface(aURL); + } if (!m_socketIsOpen) { nsCOMPtr<nsISupports> urlSupports = do_QueryInterface(aURL); - if (m_channel) - { - // put us in a state where we are always notified of incoming data - m_channel->AsyncRead(m_startPosition, m_readCount, urlSupports ,this /* stream observer */); - m_socketIsOpen = PR_TRUE; // mark the channel as open - } + if (m_channel) + { + // XXX should these errors be returned?: + if (m_startPosition > 0) { + rv = m_channel->SetTransferOffset(m_startPosition); + NS_ASSERTION(NS_SUCCEEDED(rv), "SetTransferOffset failed"); + } + rv = m_channel->SetTransferCount(m_readCount); + NS_ASSERTION(NS_SUCCEEDED(rv), "SetTransferCount failed"); + // put us in a state where we are always notified of incoming data + rv = m_channel->AsyncRead(this /* stream observer */, urlSupports); + NS_ASSERTION(NS_SUCCEEDED(rv), "AsyncRead failed"); + m_socketIsOpen = PR_TRUE; // mark the channel as open + } } // if we got an event queue service else // the connection is already open so we should begin processing our new url... rv = ProcessProtocolState(aURL, nsnull, 0, 0); @@ -309,27 +314,41 @@ NS_IMETHODIMP nsMsgProtocol::SetLoadGroup(nsILoadGroup * aLoadGroup) return NS_OK; } -NS_IMETHODIMP nsMsgProtocol::GetOriginalURI(nsIURI * *aURI) +NS_IMETHODIMP nsMsgProtocol::GetOriginalURI(nsIURI* *aURI) { - *aURI = m_originalUrl; + *aURI = m_originalUrl ? m_originalUrl : m_url; NS_IF_ADDREF(*aURI); return NS_OK; } -NS_IMETHODIMP nsMsgProtocol::GetURI(nsIURI * *aURI) +NS_IMETHODIMP nsMsgProtocol::SetOriginalURI(nsIURI* aURI) +{ + m_originalUrl = aURI; + return NS_OK; +} + +NS_IMETHODIMP nsMsgProtocol::GetURI(nsIURI* *aURI) { *aURI = m_url; NS_IF_ADDREF(*aURI); return NS_OK; } -NS_IMETHODIMP nsMsgProtocol::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) +NS_IMETHODIMP nsMsgProtocol::SetURI(nsIURI* aURI) { + m_url = aURI; + return NS_OK; +} + +NS_IMETHODIMP nsMsgProtocol::OpenInputStream(nsIInputStream **_retval) +{ + NS_NOTREACHED("OpenInputStream"); return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP nsMsgProtocol::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +NS_IMETHODIMP nsMsgProtocol::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -340,7 +359,7 @@ NS_IMETHODIMP nsMsgProtocol::AsyncOpen(nsIStreamObserver *observer, nsISupports* return NS_OK; } -NS_IMETHODIMP nsMsgProtocol::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) +NS_IMETHODIMP nsMsgProtocol::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { // set the stream listener and then load the url m_channelContext = ctxt; @@ -367,8 +386,9 @@ NS_IMETHODIMP nsMsgProtocol::AsyncRead(PRUint32 startPosition, PRInt32 readCount return LoadUrl(m_url, nsnull); } -NS_IMETHODIMP nsMsgProtocol::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) +NS_IMETHODIMP nsMsgProtocol::AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { + NS_NOTREACHED("AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -407,6 +427,90 @@ NS_IMETHODIMP nsMsgProtocol::GetContentLength(PRInt32 * aContentLength) return NS_OK; } +NS_IMETHODIMP +nsMsgProtocol::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMsgProtocol::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsMsgProtocol::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsMsgProtocol::GetOwner(nsISupports * *aPrincipal) { *aPrincipal = nsnull; @@ -415,6 +519,7 @@ NS_IMETHODIMP nsMsgProtocol::GetOwner(nsISupports * *aPrincipal) NS_IMETHODIMP nsMsgProtocol::SetOwner(nsISupports * aPrincipal) { + NS_NOTREACHED("SetOwner"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -428,6 +533,7 @@ NS_IMETHODIMP nsMsgProtocol::GetLoadGroup(nsILoadGroup * *aLoadGroup) NS_IMETHODIMP nsMsgProtocol::GetNotificationCallbacks(nsIInterfaceRequestor* *aNotificationCallbacks) { + NS_NOTREACHED("GetNotificationCallbacks"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -455,18 +561,25 @@ NS_IMETHODIMP nsMsgProtocol::IsPending(PRBool *result) return NS_OK; } -NS_IMETHODIMP nsMsgProtocol::Cancel() +NS_IMETHODIMP nsMsgProtocol::GetStatus(nsresult *status) { - return m_channel->Cancel(); + return m_channel->GetStatus(status); +} + +NS_IMETHODIMP nsMsgProtocol::Cancel(nsresult status) +{ + return m_channel->Cancel(status); } NS_IMETHODIMP nsMsgProtocol::Suspend() { + NS_NOTREACHED("Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsMsgProtocol::Resume() { + NS_NOTREACHED("Resume"); return NS_ERROR_NOT_IMPLEMENTED; } diff --git a/mozilla/mailnews/base/util/nsMsgProtocol.h b/mozilla/mailnews/base/util/nsMsgProtocol.h index fed36334282..1464c3c7a4c 100644 --- a/mozilla/mailnews/base/util/nsMsgProtocol.h +++ b/mozilla/mailnews/base/util/nsMsgProtocol.h @@ -40,7 +40,7 @@ class NS_MSG_BASE nsMsgProtocol : public nsIStreamListener, public nsIChannel { public: - nsMsgProtocol(nsIURI * aURL, nsIURI* originalURI); + nsMsgProtocol(nsIURI * aURL); virtual ~nsMsgProtocol(); NS_DECL_ISUPPORTS diff --git a/mozilla/mailnews/compose/src/nsMsgCreate.cpp b/mozilla/mailnews/compose/src/nsMsgCreate.cpp index cc35fc2cf21..6ecc8687f2c 100644 --- a/mozilla/mailnews/compose/src/nsMsgCreate.cpp +++ b/mozilla/mailnews/compose/src/nsMsgCreate.cpp @@ -194,16 +194,7 @@ nsresult rv; rv = CreateStartupUrl(mURI, getter_AddRefs(aURL)); nsCOMPtr<nsIChannel> dummyChannel; - rv = NS_NewInputStreamChannel(aURL, - nsnull, // contentType - -1, // contentLength - nsnull, // inputStream - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(dummyChannel)); + rv = NS_NewInputStreamChannel(getter_AddRefs(dummyChannel), aURL, nsnull, nsnull, -1); if (NS_FAILED(mimeParser->AsyncConvertData(nsnull, nsnull, nsnull, dummyChannel))) { Release(); diff --git a/mozilla/mailnews/compose/src/nsMsgQuote.cpp b/mozilla/mailnews/compose/src/nsMsgQuote.cpp index d56c7eae305..91807302428 100644 --- a/mozilla/mailnews/compose/src/nsMsgQuote.cpp +++ b/mozilla/mailnews/compose/src/nsMsgQuote.cpp @@ -183,16 +183,7 @@ nsMsgQuote::QuoteMessage(const PRUnichar *msgURI, PRBool quoteHeaders, nsIStream nsCOMPtr<nsISupports> quoteSupport = do_QueryInterface(this); mQuoteChannel = null_nsCOMPtr(); - rv = NS_NewInputStreamChannel(aURL, - nsnull, // contentType - -1, // contentLength - nsnull, // inputStream - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(mQuoteChannel)); + rv = NS_NewInputStreamChannel(getter_AddRefs(mQuoteChannel), aURL, nsnull, nsnull, -1); if (NS_FAILED(rv)) return rv; NS_WITH_SERVICE(nsIStreamConverterService, streamConverterService, kIStreamConverterServiceCID, &rv); @@ -213,17 +204,11 @@ nsMsgQuote::QuoteMessage(const PRUnichar *msgURI, PRBool quoteHeaders, nsIStream // now we want to create a necko channel for this url and we want to open it nsCOMPtr<nsIChannel> aChannel; - rv = netService->NewChannelFromURI(nsnull, aURL, - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(aChannel)); + rv = netService->NewChannelFromURI(aURL, getter_AddRefs(aChannel)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsISupports> aCtxt = do_QueryInterface(aURL); // now try to open the channel passing in our display consumer as the listener - rv = aChannel->AsyncRead(0, -1, aCtxt, convertedListener); + rv = aChannel->AsyncRead(convertedListener, aCtxt); ReleaseMessageServiceFromURI(aMsgUri, msgService); return rv; diff --git a/mozilla/mailnews/compose/src/nsSmtpProtocol.cpp b/mozilla/mailnews/compose/src/nsSmtpProtocol.cpp index b72f9eb5c5e..81f7795954c 100644 --- a/mozilla/mailnews/compose/src/nsSmtpProtocol.cpp +++ b/mozilla/mailnews/compose/src/nsSmtpProtocol.cpp @@ -254,7 +254,7 @@ NS_INTERFACE_MAP_BEGIN(nsSmtpProtocol) NS_INTERFACE_MAP_END_INHERITING(nsMsgProtocol) nsSmtpProtocol::nsSmtpProtocol(nsIURI * aURL) - : nsMsgProtocol(aURL, aURL) + : nsMsgProtocol(aURL) { Initialize(aURL); } diff --git a/mozilla/mailnews/compose/src/nsSmtpService.cpp b/mozilla/mailnews/compose/src/nsSmtpService.cpp index e7b88b04e97..2b30735d793 100644 --- a/mozilla/mailnews/compose/src/nsSmtpService.cpp +++ b/mozilla/mailnews/compose/src/nsSmtpService.cpp @@ -250,11 +250,12 @@ public: protected: nsCOMPtr<nsIURI> m_url; + nsresult mStatus; }; nsMailtoChannel::nsMailtoChannel(nsIURI * aURI) + : m_url(aURI), mStatus(NS_OK) { - m_url = aURI; NS_INIT_ISUPPORTS(); } @@ -276,6 +277,7 @@ NS_IMETHODIMP nsMailtoChannel::SetLoadGroup(nsILoadGroup * aLoadGroup) NS_IMETHODIMP nsMailtoChannel::GetNotificationCallbacks(nsIInterfaceRequestor* *aNotificationCallbacks) { + NS_NOTREACHED("GetNotificationCallbacks"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -291,26 +293,40 @@ nsMailtoChannel::GetSecurityInfo(nsISupports * *aSecurityInfo) return NS_OK; } -NS_IMETHODIMP nsMailtoChannel::GetOriginalURI(nsIURI * *aURI) +NS_IMETHODIMP nsMailtoChannel::GetOriginalURI(nsIURI* *aURI) { *aURI = nsnull; return NS_OK; } -NS_IMETHODIMP nsMailtoChannel::GetURI(nsIURI * *aURI) +NS_IMETHODIMP nsMailtoChannel::SetOriginalURI(nsIURI* aURI) +{ + NS_NOTREACHED("SetOriginalURI"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP nsMailtoChannel::GetURI(nsIURI* *aURI) { *aURI = m_url; NS_IF_ADDREF(*aURI); return NS_OK; } -NS_IMETHODIMP nsMailtoChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) +NS_IMETHODIMP nsMailtoChannel::SetURI(nsIURI* aURI) { + m_url = aURI; + return NS_OK; +} + +NS_IMETHODIMP nsMailtoChannel::OpenInputStream(nsIInputStream **_retval) +{ + NS_NOTREACHED("OpenInputStream"); return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP nsMailtoChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +NS_IMETHODIMP nsMailtoChannel::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -321,23 +337,26 @@ NS_IMETHODIMP nsMailtoChannel::AsyncOpen(nsIStreamObserver *observer, nsISupport return NS_OK; } -NS_IMETHODIMP nsMailtoChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) +NS_IMETHODIMP nsMailtoChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { return listener->OnStartRequest(this, ctxt); } -NS_IMETHODIMP nsMailtoChannel::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) +NS_IMETHODIMP nsMailtoChannel::AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { + NS_NOTREACHED("AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsMailtoChannel::GetLoadAttributes(nsLoadFlags *aLoadAttributes) { + NS_NOTREACHED("GetLoadAttributes"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsMailtoChannel::SetLoadAttributes(nsLoadFlags aLoadAttributes) { + NS_NOTREACHED("SetLoadAttributes"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -359,13 +378,99 @@ NS_IMETHODIMP nsMailtoChannel::GetContentLength(PRInt32 * aContentLength) return NS_OK; } +NS_IMETHODIMP +nsMailtoChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMailtoChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsMailtoChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsMailtoChannel::GetOwner(nsISupports * *aPrincipal) { + NS_NOTREACHED("GetOwner"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsMailtoChannel::SetOwner(nsISupports * aPrincipal) { + NS_NOTREACHED("SetOwner"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -379,18 +484,27 @@ NS_IMETHODIMP nsMailtoChannel::IsPending(PRBool *result) return NS_OK; } -NS_IMETHODIMP nsMailtoChannel::Cancel() +NS_IMETHODIMP nsMailtoChannel::GetStatus(nsresult *status) { + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP nsMailtoChannel::Cancel(nsresult status) +{ + mStatus = status; return NS_OK; } NS_IMETHODIMP nsMailtoChannel::Suspend() { + NS_NOTREACHED("Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsMailtoChannel::Resume() { + NS_NOTREACHED("Resume"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -414,15 +528,7 @@ NS_IMETHODIMP nsSmtpService::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI return rv; } -NS_IMETHODIMP nsSmtpService::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **_retval) +NS_IMETHODIMP nsSmtpService::NewChannel(nsIURI *aURI, nsIChannel **_retval) { nsresult rv = NS_OK; nsMailtoChannel * aMailtoChannel = new nsMailtoChannel(aURI); diff --git a/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp b/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp index 1530ee520b7..c32a4c89ae5 100644 --- a/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp +++ b/mozilla/mailnews/compose/tests/geturl/nsURLFetcher.cpp @@ -195,16 +195,10 @@ nsURLFetcher::FireURLRequest(nsIURI *aURL, nsOutputFileStream *fOut, if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIChannel> channel; - rv = service->NewChannelFromURI("load", aURL, - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(channel)); + rv = service->NewChannelFromURI(aURL, getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; - rv = channel->AsyncRead(0, -1, nsnull, this); + rv = channel->AsyncRead(this, nsnull); if (NS_FAILED(rv)) return rv; mURL = dont_QueryInterface(aURL); diff --git a/mozilla/mailnews/imap/public/nsIImapMockChannel.idl b/mozilla/mailnews/imap/public/nsIImapMockChannel.idl index 29e034fd4cd..7b191cf489d 100644 --- a/mozilla/mailnews/imap/public/nsIImapMockChannel.idl +++ b/mozilla/mailnews/imap/public/nsIImapMockChannel.idl @@ -56,7 +56,5 @@ interface nsIImapMockChannel : nsIChannel { void GetChannelListener(out nsIStreamListener aChannelListener); void GetChannelContext(out nsISupports aChannelContext); - void SetURI(in nsIURI aUrl); void Close(); - attribute boolean cancelled; }; diff --git a/mozilla/mailnews/imap/src/nsImapProtocol.cpp b/mozilla/mailnews/imap/src/nsImapProtocol.cpp index e3bf4617a82..4b64d46bb39 100644 --- a/mozilla/mailnews/imap/src/nsImapProtocol.cpp +++ b/mozilla/mailnews/imap/src/nsImapProtocol.cpp @@ -537,7 +537,7 @@ nsresult nsImapProtocol::SetupWithUrl(nsIURI * aURL, nsISupports* aConsumer) // as the event sink queue if (aRealStreamListener) { - rv = NS_NewAsyncStreamListener(aRealStreamListener, m_sinkEventQueue, getter_AddRefs(m_channelListener)); + rv = NS_NewAsyncStreamListener(getter_AddRefs(m_channelListener), aRealStreamListener, m_sinkEventQueue); } PRUint32 capability = kCapabilityUndefined; @@ -580,7 +580,7 @@ nsresult nsImapProtocol::SetupWithUrl(nsIURI * aURL, nsISupports* aConsumer) rv = socketService->CreateTransportOfType(connectionType, hostName, port, nsnull, 0, 0, getter_AddRefs(m_channel)); if (NS_SUCCEEDED(rv)) - rv = m_channel->OpenOutputStream(0 /* start position */, getter_AddRefs(m_outputStream)); + rv = m_channel->OpenOutputStream(getter_AddRefs(m_outputStream)); } } // if m_runningUrl } // if aUR @@ -1025,7 +1025,7 @@ PRBool nsImapProtocol::ProcessCurrentURL() if (!TestFlag(IMAP_CONNECTION_IS_OPEN) && m_channel) { - m_channel->AsyncRead(0, -1, nsnull,this /* stream observer */); + m_channel->AsyncRead(this /* stream observer */, nsnull); SetFlag(IMAP_CONNECTION_IS_OPEN); } @@ -1263,6 +1263,7 @@ NS_IMETHODIMP nsImapProtocol::OnStopRequest(nsIChannel * /* aChannel */, nsISupp NS_IMETHODIMP nsImapProtocol::GetStreamConsumer (nsISupports **result) { // mscott - i'm going to make this method obsolete... + NS_NOTREACHED("nsImapProtocol::GetStreamConsumer"); return NS_ERROR_NOT_IMPLEMENTED; #if 0 if (result) @@ -3406,11 +3407,11 @@ PRMonitor *nsImapProtocol::GetDataMemberMonitor() // in 4.5 - we need to think about this some. Some of it may just go away in the new world order PRBool nsImapProtocol::DeathSignalReceived() { - PRBool returnValue = PR_FALSE; + nsresult returnValue = NS_OK; if (m_mockChannel) - m_mockChannel->GetCancelled(&returnValue); + m_mockChannel->GetStatus(&returnValue); - if (!returnValue) // check the other way of cancelling. + if (NS_SUCCEEDED(returnValue)) // check the other way of cancelling. { PR_EnterMonitor(m_threadDeathMonitor); returnValue = m_threadShouldDie; @@ -6301,7 +6302,7 @@ nsImapMockChannel::nsImapMockChannel() { NS_INIT_REFCNT(); m_channelContext = nsnull; - m_cancelled = PR_FALSE; + m_cancelStatus = NS_OK; mOwningRefToUrl = PR_FALSE; } @@ -6337,12 +6338,6 @@ NS_IMETHODIMP nsImapMockChannel::GetChannelContext(nsISupports **aChannelContex // now implement our mock implementation of the channel interface...we forward all calls to the real // channel if we have one...otherwise we return something bogus... -NS_IMETHODIMP nsImapMockChannel::SetURI(nsIURI * aURL) -{ - m_url = aURL; - return NS_OK; -} - NS_IMETHODIMP nsImapMockChannel::SetLoadGroup(nsILoadGroup * aLoadGroup) { m_loadGroup = dont_QueryInterface(aLoadGroup); @@ -6356,30 +6351,46 @@ NS_IMETHODIMP nsImapMockChannel::GetLoadGroup(nsILoadGroup * *aLoadGroup) return NS_OK; } -NS_IMETHODIMP nsImapMockChannel::GetOriginalURI(nsIURI * *aURI) +NS_IMETHODIMP nsImapMockChannel::GetOriginalURI(nsIURI* *aURI) { // IMap does not seem to have the notion of an original URI :-( -// *aURI = m_originalUrl; +// *aURI = m_originalUrl ? m_originalUrl : m_url; *aURI = m_url; NS_IF_ADDREF(*aURI); return NS_OK; } -NS_IMETHODIMP nsImapMockChannel::GetURI(nsIURI * *aURI) +NS_IMETHODIMP nsImapMockChannel::SetOriginalURI(nsIURI* aURI) +{ +// IMap does not seem to have the notion of an original URI :-( +// NS_NOTREACHED("nsImapMockChannel::SetOriginalURI"); +// return NS_ERROR_NOT_IMPLEMENTED; + return NS_OK; // ignore +} + +NS_IMETHODIMP nsImapMockChannel::GetURI(nsIURI* *aURI) { *aURI = m_url; NS_IF_ADDREF(*aURI); return NS_OK; } -NS_IMETHODIMP nsImapMockChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) +NS_IMETHODIMP nsImapMockChannel::SetURI(nsIURI* aURI) { - return NS_ERROR_NOT_IMPLEMENTED; + m_url = aURI; + return NS_OK; +} + +NS_IMETHODIMP nsImapMockChannel::OpenInputStream(nsIInputStream **_retval) +{ + NS_NOTREACHED("nsImapMockChannel::OpenInputStream"); + return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP nsImapMockChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +NS_IMETHODIMP nsImapMockChannel::OpenOutputStream(nsIOutputStream **_retval) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsImapMockChannel::OpenOutputStream"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsImapMockChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) @@ -6389,7 +6400,7 @@ NS_IMETHODIMP nsImapMockChannel::AsyncOpen(nsIStreamObserver *observer, nsISuppo return NS_OK; } -NS_IMETHODIMP nsImapMockChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) +NS_IMETHODIMP nsImapMockChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { nsCOMPtr<nsICachedNetData> cacheEntry; PRUint32 contentLength = 0; @@ -6480,7 +6491,7 @@ NS_IMETHODIMP nsImapMockChannel::AsyncRead(PRUint32 startPosition, PRInt32 readC nsImapCacheStreamListener * cacheListener = new nsImapCacheStreamListener(); NS_ADDREF(cacheListener); cacheListener->Init(m_channelListener, NS_STATIC_CAST(nsIChannel *, this)); - rv = cacheChannel->AsyncRead(startPosition, readCount, m_channelContext, cacheListener); + rv = cacheChannel->AsyncRead(cacheListener, m_channelContext); NS_RELEASE(cacheListener); if (NS_SUCCEEDED(rv)) // ONLY if we succeeded in actually starting the read should we return @@ -6510,9 +6521,10 @@ NS_IMETHODIMP nsImapMockChannel::AsyncRead(PRUint32 startPosition, PRInt32 readC return rv; } -NS_IMETHODIMP nsImapMockChannel::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) +NS_IMETHODIMP nsImapMockChannel::AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsImapMockChannel::AsyncWrite"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsImapMockChannel::GetLoadAttributes(nsLoadFlags *aLoadAttributes) @@ -6546,6 +6558,90 @@ NS_IMETHODIMP nsImapMockChannel::GetContentLength(PRInt32 * aContentLength) return NS_OK; } +NS_IMETHODIMP +nsImapMockChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsImapMockChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsImapMockChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsImapMockChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsImapMockChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsImapMockChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsImapMockChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsImapMockChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsImapMockChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsImapMockChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsImapMockChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsImapMockChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsImapMockChannel::GetOwner(nsISupports * *aPrincipal) { *aPrincipal = nsnull; @@ -6554,7 +6650,8 @@ NS_IMETHODIMP nsImapMockChannel::GetOwner(nsISupports * *aPrincipal) NS_IMETHODIMP nsImapMockChannel::SetOwner(nsISupports * aPrincipal) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsImapMockChannel::SetOwner"); + return NS_ERROR_NOT_IMPLEMENTED; } //////////////////////////////////////////////////////////////////////////////// @@ -6567,40 +6664,35 @@ NS_IMETHODIMP nsImapMockChannel::IsPending(PRBool *result) return NS_OK; } -NS_IMETHODIMP nsImapMockChannel::Cancel() +NS_IMETHODIMP nsImapMockChannel::GetStatus(nsresult *status) { - m_cancelled = PR_TRUE; + *status = m_cancelStatus; + return NS_OK; +} + +NS_IMETHODIMP nsImapMockChannel::Cancel(nsresult status) +{ + m_cancelStatus = status; return NS_OK; } NS_IMETHODIMP nsImapMockChannel::Suspend() { + NS_NOTREACHED("nsImapMockChannel::Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsImapMockChannel::Resume() { + NS_NOTREACHED("nsImapMockChannel::Resume"); return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP nsImapMockChannel::GetCancelled(PRBool *aResult) -{ - if (!aResult) - return NS_ERROR_NULL_POINTER; - *aResult = m_cancelled; - return NS_OK; -} - -NS_IMETHODIMP nsImapMockChannel::SetCancelled(PRBool cancelled) -{ - m_cancelled = cancelled; - return NS_OK; -} - NS_IMETHODIMP nsImapMockChannel::GetNotificationCallbacks(nsIInterfaceRequestor* *aNotificationCallbacks) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsImapMockChannel::GetNotificationCallbacks"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP diff --git a/mozilla/mailnews/imap/src/nsImapProtocol.h b/mozilla/mailnews/imap/src/nsImapProtocol.h index 7796ac87878..a93d0753a9e 100644 --- a/mozilla/mailnews/imap/src/nsImapProtocol.h +++ b/mozilla/mailnews/imap/src/nsImapProtocol.h @@ -592,7 +592,7 @@ protected: // non owning ref of the context in order to fix a circular ref count // because the context is already the uri... nsISupports * m_channelContext; - PRBool m_cancelled; + nsresult m_cancelStatus; nsLoadFlags mLoadAttributes; }; diff --git a/mozilla/mailnews/imap/src/nsImapService.cpp b/mozilla/mailnews/imap/src/nsImapService.cpp index 5a1dd6c8e75..451f152e9fc 100644 --- a/mozilla/mailnews/imap/src/nsImapService.cpp +++ b/mozilla/mailnews/imap/src/nsImapService.cpp @@ -483,13 +483,12 @@ nsresult nsImapService::FetchMimePart(nsIImapUrl * aImapUrl, if (NS_SUCCEEDED(rv) && mailnewsUrl) mailnewsUrl->GetLoadGroup(getter_AddRefs(aLoadGroup)); - rv = NewChannel(nsnull, url, aLoadGroup, nsnull, nsIChannel::LOAD_NORMAL, - nsnull, 0, 0, getter_AddRefs(aChannel)); + rv = NewChannel(url, getter_AddRefs(aChannel)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsISupports> aCtxt = do_QueryInterface(url); // now try to open the channel passing in our display consumer as the listener - rv = aChannel->AsyncRead(0, -1, aCtxt, aStreamListener); + rv = aChannel->AsyncRead(aStreamListener, aCtxt); } else // do what we used to do before { @@ -780,18 +779,19 @@ nsImapService::FetchMessage(nsIImapUrl * aImapUrl, if (NS_SUCCEEDED(rv) && aStreamListener) { nsCOMPtr<nsIChannel> aChannel; - nsCOMPtr<nsILoadGroup> aLoadGroup; - nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(aImapUrl, &rv); - if (NS_SUCCEEDED(rv) && mailnewsUrl) - mailnewsUrl->GetLoadGroup(getter_AddRefs(aLoadGroup)); + nsCOMPtr<nsILoadGroup> aLoadGroup; + nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(aImapUrl, &rv); + if (NS_SUCCEEDED(rv) && mailnewsUrl) + mailnewsUrl->GetLoadGroup(getter_AddRefs(aLoadGroup)); + rv = NewChannel(url, getter_AddRefs(aChannel)); + if (NS_FAILED(rv)) return rv; - rv = NewChannel(nsnull, url, aLoadGroup, nsnull, nsIChannel::LOAD_NORMAL, - nsnull, 0, 0, getter_AddRefs(aChannel)); + rv = aChannel->SetLoadGroup(aLoadGroup); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsISupports> aCtxt = do_QueryInterface(url); // now try to open the channel passing in our display consumer as the listener - rv = aChannel->AsyncRead(0, -1, aCtxt, aStreamListener); + rv = aChannel->AsyncRead(aStreamListener, aCtxt); } else // do what we used to do before { @@ -2604,15 +2604,7 @@ NS_IMETHODIMP nsImapService::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI return rv; } -NS_IMETHODIMP nsImapService::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **_retval) +NS_IMETHODIMP nsImapService::NewChannel(nsIURI *aURI, nsIChannel **_retval) { // imap can't open and return a channel right away...the url needs to go in the imap url queue // until we find a connection which can run the url..in order to satisfy necko, we're going to return @@ -2628,15 +2620,6 @@ NS_IMETHODIMP nsImapService::NewChannel(const char *verb, rv = imapUrl->GetMockChannel(getter_AddRefs(mockChannel)); if (NS_FAILED(rv) || !mockChannel) return NS_ERROR_FAILURE; - // XXX this seems wrong to do to this shared mock channel too, - // but oh well... - rv = mockChannel->SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = mockChannel->SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = mockChannel->SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - *_retval = mockChannel; NS_IF_ADDREF(*_retval); diff --git a/mozilla/mailnews/local/src/nsMailboxProtocol.cpp b/mozilla/mailnews/local/src/nsMailboxProtocol.cpp index 8dbe70979a1..6b18d204aea 100644 --- a/mozilla/mailnews/local/src/nsMailboxProtocol.cpp +++ b/mozilla/mailnews/local/src/nsMailboxProtocol.cpp @@ -59,8 +59,8 @@ static NS_DEFINE_CID(kCMailDB, NS_MAILDB_CID); */ #define OUTPUT_BUFFER_SIZE (4096*2) -nsMailboxProtocol::nsMailboxProtocol(nsIURI * aURI, nsIURI* originalURI) - : nsMsgProtocol(aURI, originalURI) +nsMailboxProtocol::nsMailboxProtocol(nsIURI * aURI) + : nsMsgProtocol(aURI) { Initialize(aURI); @@ -181,13 +181,6 @@ NS_IMETHODIMP nsMailboxProtocol::OnStopRequest(nsIChannel * aChannel, nsISupport // End of nsIStreamListenerSupport ////////////////////////////////////////////////////////////////////////////////////////////// -NS_IMETHODIMP nsMailboxProtocol::Cancel() // handle stop button -{ - return nsMsgProtocol::Cancel(); -} - - - PRInt32 nsMailboxProtocol::DoneReadingMessage() { nsresult rv = NS_OK; diff --git a/mozilla/mailnews/local/src/nsMailboxProtocol.h b/mozilla/mailnews/local/src/nsMailboxProtocol.h index e0013699f07..6b213afba18 100644 --- a/mozilla/mailnews/local/src/nsMailboxProtocol.h +++ b/mozilla/mailnews/local/src/nsMailboxProtocol.h @@ -69,7 +69,7 @@ class nsMailboxProtocol : public nsMsgProtocol public: // Creating a protocol instance requires the URL which needs to be run AND it requires // a transport layer. - nsMailboxProtocol(nsIURI * aURL, nsIURI* originalURI); + nsMailboxProtocol(nsIURI * aURL); virtual ~nsMailboxProtocol(); // the consumer of the url might be something like an nsIWebShell.... @@ -82,11 +82,6 @@ public: NS_IMETHOD OnStartRequest(nsIChannel * aChannel, nsISupports *ctxt); NS_IMETHOD OnStopRequest(nsIChannel * aChannel, nsISupports *ctxt, nsresult aStatus, const PRUnichar *aMsg); - //////////////////////////////////////////////////////////////////////////////////////// - // End of nsIStreamListenerSupport - //////////////////////////////////////////////////////////////////////////////////////// - NS_IMETHOD Cancel(); // handle stop button - private: nsCOMPtr<nsIMailboxUrl> m_runningUrl; // the nsIMailboxURL that is currently running nsMailboxAction m_mailboxAction; // current mailbox action associated with this connnection... diff --git a/mozilla/mailnews/local/src/nsMailboxService.cpp b/mozilla/mailnews/local/src/nsMailboxService.cpp index f8ce771bfa8..563e5d8442d 100644 --- a/mozilla/mailnews/local/src/nsMailboxService.cpp +++ b/mozilla/mailnews/local/src/nsMailboxService.cpp @@ -230,7 +230,7 @@ nsresult nsMailboxService::RunMailboxUrl(nsIURI * aMailboxUrl, nsISupports * aDi { // create a protocol instance to run the url.. nsresult rv = NS_OK; - nsMailboxProtocol * protocol = new nsMailboxProtocol(aMailboxUrl, aMailboxUrl); + nsMailboxProtocol * protocol = new nsMailboxProtocol(aMailboxUrl); if (protocol) { @@ -336,26 +336,12 @@ NS_IMETHODIMP nsMailboxService::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIU return rv; } -NS_IMETHODIMP nsMailboxService::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **_retval) +NS_IMETHODIMP nsMailboxService::NewChannel(nsIURI *aURI, nsIChannel **_retval) { nsresult rv = NS_OK; - nsMailboxProtocol * protocol = new nsMailboxProtocol(aURI, originalURI); + nsMailboxProtocol * protocol = new nsMailboxProtocol(aURI); if (protocol) { - rv = protocol->SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = protocol->SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = protocol->SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; rv = protocol->QueryInterface(NS_GET_IID(nsIChannel), (void **) _retval); } else diff --git a/mozilla/mailnews/local/src/nsPop3Protocol.cpp b/mozilla/mailnews/local/src/nsPop3Protocol.cpp index 5a5cdab93f2..64cb00c2aab 100644 --- a/mozilla/mailnews/local/src/nsPop3Protocol.cpp +++ b/mozilla/mailnews/local/src/nsPop3Protocol.cpp @@ -374,7 +374,7 @@ net_pop3_free_state(Pop3UidlHost* host) // nsPop3Protocol class implementation nsPop3Protocol::nsPop3Protocol(nsIURI* aURL) - : nsMsgProtocol(aURL, aURL), + : nsMsgProtocol(aURL), nsMsgLineBuffer(NULL, PR_FALSE), m_bytesInMsgReceived(0), m_totalFolderSize(0), @@ -599,12 +599,6 @@ NS_IMETHODIMP nsPop3Protocol::OnStopRequest(nsIChannel * aChannel, nsISupports * return rv; } -NS_IMETHODIMP nsPop3Protocol::Cancel() // handle stop button -{ - return nsMsgProtocol::Cancel(); -} - - nsresult nsPop3Protocol::LoadUrl(nsIURI* aURL, nsISupports * /* aConsumer */) { nsresult rv = 0; diff --git a/mozilla/mailnews/local/src/nsPop3Protocol.h b/mozilla/mailnews/local/src/nsPop3Protocol.h index d42afde4f8b..12f250ca901 100644 --- a/mozilla/mailnews/local/src/nsPop3Protocol.h +++ b/mozilla/mailnews/local/src/nsPop3Protocol.h @@ -258,7 +258,6 @@ public: nsresult GetPassword(char ** aPassword); NS_IMETHOD OnStopRequest(nsIChannel * aChannel, nsISupports * aContext, nsresult aStatus, const PRUnichar* aMsg); - NS_IMETHOD Cancel(); // handle stop button // for nsMsgLineBuffer virtual PRInt32 HandleLine(char *line, PRUint32 line_length); diff --git a/mozilla/mailnews/local/src/nsPop3Service.cpp b/mozilla/mailnews/local/src/nsPop3Service.cpp index f51e320ac2d..df5961f9a5c 100644 --- a/mozilla/mailnews/local/src/nsPop3Service.cpp +++ b/mozilla/mailnews/local/src/nsPop3Service.cpp @@ -264,23 +264,17 @@ NS_IMETHODIMP nsPop3Service::GetDefaultPort(PRInt32 *aDefaultPort) NS_IMETHODIMP nsPop3Service::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI **_retval) { // i just haven't implemented this yet...I will be though.... - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsPop3Service::NewURI"); + return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP nsPop3Service::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **_retval) +NS_IMETHODIMP nsPop3Service::NewChannel(nsIURI *aURI, nsIChannel **_retval) { // mscott - right now, I don't like the idea of returning channels to the caller. They just want us // to run the url, they don't want a channel back...I'm going to be addressing this issue with // the necko team in more detail later on. - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsPop3Service::NewChannel"); + return NS_ERROR_NOT_IMPLEMENTED; } diff --git a/mozilla/mailnews/mime/src/nsStreamConverter.cpp b/mozilla/mailnews/mime/src/nsStreamConverter.cpp index a02f0f7eb20..7e4bb1c54af 100644 --- a/mozilla/mailnews/mime/src/nsStreamConverter.cpp +++ b/mozilla/mailnews/mime/src/nsStreamConverter.cpp @@ -455,17 +455,9 @@ NS_IMETHODIMP nsStreamConverter::Init(nsIURI *aURI, nsIStreamListener * aOutList } - // the following output channel stream is used to fake the content type for people who later - // call into us.. - rv = NS_NewInputStreamChannel(aURI, mOutputFormat, - -1, // XXX fix contentLength - nsnull, // inputStream - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(mOutgoingChannel)); + // the following output channel stream is used to fake the content type for people who later + // call into us.. + rv = NS_NewInputStreamChannel(getter_AddRefs(mOutgoingChannel), aURI, nsnull, mOutputFormat, -1); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/mailnews/news/src/nsNNTPProtocol.cpp b/mozilla/mailnews/news/src/nsNNTPProtocol.cpp index d7ce3c49480..6b126e7f507 100644 --- a/mozilla/mailnews/news/src/nsNNTPProtocol.cpp +++ b/mozilla/mailnews/news/src/nsNNTPProtocol.cpp @@ -444,7 +444,7 @@ nsDummyBufferStream::QueryInterface(REFNSIID aIID, void** result) } nsNNTPProtocol::nsNNTPProtocol(nsIURI * aURL, nsIMsgWindow *aMsgWindow) - : nsMsgProtocol(aURL, nsnull) + : nsMsgProtocol(aURL) { m_ProxyServer = nsnull; m_lineStreamBuffer = nsnull; @@ -947,7 +947,7 @@ NS_IMETHODIMP nsNNTPProtocol::OnStopRequest(nsIChannel * aChannel, nsISupports * NS_IMETHODIMP nsNNTPProtocol::Cancel() // handle stop button { m_nextState = NNTP_ERROR; - return nsMsgProtocol::Cancel(); + return nsMsgProtocol::Cancel(NS_BINDING_ABORTED); } diff --git a/mozilla/mailnews/news/src/nsNntpService.cpp b/mozilla/mailnews/news/src/nsNntpService.cpp index 3030a3c3541..65ed196c221 100644 --- a/mozilla/mailnews/news/src/nsNntpService.cpp +++ b/mozilla/mailnews/news/src/nsNntpService.cpp @@ -1060,15 +1060,7 @@ NS_IMETHODIMP nsNntpService::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI return rv; } -NS_IMETHODIMP nsNntpService::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **_retval) +NS_IMETHODIMP nsNntpService::NewChannel(nsIURI *aURI, nsIChannel **_retval) { nsresult rv = NS_OK; nsNNTPProtocol *nntpProtocol = new nsNNTPProtocol(aURI, nsnull); @@ -1077,13 +1069,6 @@ NS_IMETHODIMP nsNntpService::NewChannel(const char *verb, rv = nntpProtocol->Initialize(); if (NS_FAILED(rv)) return rv; - rv = nntpProtocol->SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = nntpProtocol->SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = nntpProtocol->SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - return nntpProtocol->QueryInterface(NS_GET_IID(nsIChannel), (void **) _retval); } diff --git a/mozilla/modules/libjar/nsJARChannel.cpp b/mozilla/modules/libjar/nsJARChannel.cpp index 8fea9b0b78b..4562beb5d91 100644 --- a/mozilla/modules/libjar/nsJARChannel.cpp +++ b/mozilla/modules/libjar/nsJARChannel.cpp @@ -35,7 +35,6 @@ static NS_DEFINE_CID(kFileTransportServiceCID, NS_FILETRANSPORTSERVICE_CID); static NS_DEFINE_CID(kMIMEServiceCID, NS_MIMESERVICE_CID); static NS_DEFINE_CID(kZipReaderCID, NS_ZIPREADER_CID); -static NS_DEFINE_CID(kFileChannelCID, NS_FILECHANNEL_CID); static NS_DEFINE_CID(kScriptSecurityManagerCID, NS_SCRIPTSECURITYMANAGER_CID); //////////////////////////////////////////////////////////////////////////////// @@ -63,17 +62,20 @@ public: // after successfully downloading the jar file to the cache, // start the extraction process: nsCOMPtr<nsIFileChannel> jarCacheFile; - rv = NS_NewFileChannel(mJarCacheFile, - PR_RDONLY, - nsnull, // XXX content type - 0, // XXX content length - mJARChannel->mLoadGroup, - mJARChannel->mCallbacks, - mJARChannel->mLoadAttributes, - nsnull, - mJARChannel->mBufferSegmentSize, - mJARChannel->mBufferMaxSize, - getter_AddRefs(jarCacheFile)); + rv = NS_NewLocalFileChannel(getter_AddRefs(jarCacheFile), + mJarCacheFile, + PR_RDONLY, + 0); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetLoadGroup(mJARChannel->mLoadGroup); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetBufferSegmentSize(mJARChannel->mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetBufferMaxSize(mJARChannel->mBufferMaxSize); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetLoadAttributes(mJARChannel->mLoadAttributes); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetNotificationCallbacks(mJARChannel->mCallbacks); if (NS_FAILED(rv)) return rv; rv = mJARChannel->ExtractJARElement(jarCacheFile); @@ -103,18 +105,16 @@ NS_IMPL_ISUPPORTS1(nsJARDownloadObserver, nsIStreamObserver) //////////////////////////////////////////////////////////////////////////////// nsJARChannel::nsJARChannel() - : mCommand(nsnull), - mContentType(nsnull), + : mContentType(nsnull), mJAREntry(nsnull), - mMonitor(nsnull) + mMonitor(nsnull), + mStatus(NS_OK) { NS_INIT_REFCNT(); } nsJARChannel::~nsJARChannel() { - if (mCommand) - nsCRT::free(mCommand); if (mContentType) nsCRT::free(mContentType); if (mJAREntry) @@ -150,33 +150,10 @@ nsJARChannel::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) } nsresult -nsJARChannel::Init(nsIJARProtocolHandler* aHandler, - const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsJARChannel::Init(nsIJARProtocolHandler* aHandler, nsIURI* uri) { nsresult rv; mURI = do_QueryInterface(uri, &rv); - if (NS_FAILED(rv)) return rv; - mCommand = nsCRT::strdup(command); - if (mCommand == nsnull) - return NS_ERROR_OUT_OF_MEMORY; - mOriginalURI = originalURI ? originalURI : uri; - mBufferSegmentSize = bufferSegmentSize; - mBufferMaxSize = bufferMaxSize; - - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); if (NS_FAILED(rv)) return rv; mMonitor = PR_NewMonitor(); @@ -192,27 +169,35 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler, NS_IMETHODIMP nsJARChannel::IsPending(PRBool* result) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::IsPending"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsJARChannel::Cancel() +nsJARChannel::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::Cancel(nsresult status) { nsresult rv; nsAutoMonitor monitor(mMonitor); if (mJarCacheTransport) { - rv = mJarCacheTransport->Cancel(); + rv = mJarCacheTransport->Cancel(status); if (NS_FAILED(rv)) return rv; mJarCacheTransport = nsnull; } if (mJarExtractionTransport) { - rv = mJarExtractionTransport->Cancel(); + rv = mJarExtractionTransport->Cancel(status); if (NS_FAILED(rv)) return rv; mJarExtractionTransport = nsnull; } - - return NS_OK; + mStatus = status; + return rv; } NS_IMETHODIMP @@ -257,11 +242,18 @@ nsJARChannel::Resume() NS_IMETHODIMP nsJARChannel::GetOriginalURI(nsIURI* *aOriginalURI) { - *aOriginalURI = mOriginalURI; + *aOriginalURI = mOriginalURI ? mOriginalURI : (nsIURI*)mURI; NS_ADDREF(*aOriginalURI); return NS_OK; } +NS_IMETHODIMP +nsJARChannel::SetOriginalURI(nsIURI* aOriginalURI) +{ + mOriginalURI = aOriginalURI; + return NS_OK; +} + NS_IMETHODIMP nsJARChannel::GetURI(nsIURI* *aURI) { @@ -271,28 +263,36 @@ nsJARChannel::GetURI(nsIURI* *aURI) } NS_IMETHODIMP -nsJARChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream* *result) +nsJARChannel::SetURI(nsIURI* aURI) { - return NS_ERROR_NOT_IMPLEMENTED; + nsresult rv; + mURI = do_QueryInterface(aURI, &rv); + return rv; } NS_IMETHODIMP -nsJARChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *result) +nsJARChannel::OpenInputStream(nsIInputStream* *result) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::OpenInputStream"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsJARChannel::OpenOutputStream(nsIOutputStream* *result) +{ + NS_NOTREACHED("nsJARChannel::OpenOutputStream"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsJARChannel::AsyncOpen(nsIStreamObserver* observer, nsISupports* ctxt) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::AsyncOpen"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports* ctxt, - nsIStreamListener* listener) +nsJARChannel::AsyncRead(nsIStreamListener* listener, nsISupports* ctxt) { nsresult rv; rv = mURI->GetJARFile(getter_AddRefs(mJARBaseURI)); @@ -303,15 +303,19 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsCOMPtr<nsIChannel> jarBaseChannel; rv = NS_OpenURI(getter_AddRefs(jarBaseChannel), - mJARBaseURI, mLoadGroup, mCallbacks, mLoadAttributes); + mJARBaseURI, nsnull); if (NS_FAILED(rv)) return rv; - + rv = jarBaseChannel->SetLoadGroup(mLoadGroup); + if (NS_FAILED(rv)) return rv; + rv = jarBaseChannel->SetLoadAttributes(mLoadAttributes); + if (NS_FAILED(rv)) return rv; + rv = jarBaseChannel->SetNotificationCallbacks(mCallbacks); + if (NS_FAILED(rv)) return rv; + if (mLoadGroup) (void)mLoadGroup->AddChannel(this, nsnull); // XXX need to set a state variable here to say we're reading - mStartPosition = startPosition; - mReadCount = readCount; mUserContext = ctxt; mUserListener = listener; @@ -335,22 +339,14 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, { // then we've already got the file in the local cache -- no need to download it nsCOMPtr<nsIFileChannel> fileChannel; - rv = nsComponentManager::CreateInstance(kFileChannelCID, - nsnull, - NS_GET_IID(nsIFileChannel), - getter_AddRefs(fileChannel)); + rv = NS_NewLocalFileChannel(getter_AddRefs(fileChannel), + jarCacheFile, + PR_RDONLY, + 0); if (NS_FAILED(rv)) return rv; - - rv = fileChannel->Init(jarCacheFile, - PR_RDONLY, - nsnull, // contentType - -1, // contentLength - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - mBufferSegmentSize, - mBufferMaxSize); + rv = fileChannel->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = fileChannel->SetBufferMaxSize(mBufferMaxSize); if (NS_FAILED(rv)) return rv; rv = ExtractJARElement(fileChannel); @@ -365,10 +361,13 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // use a file transport to serve as a data pump for the download (done // on some other thread) nsCOMPtr<nsIChannel> jarCacheTransport; - rv = fts->CreateTransport(jarCacheFile, PR_RDONLY, mCommand, - mBufferSegmentSize, mBufferMaxSize, + rv = fts->CreateTransport(jarCacheFile, PR_RDONLY, 0, getter_AddRefs(mJarCacheTransport)); if (NS_FAILED(rv)) return rv; + rv = mJarCacheTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = mJarCacheTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; rv = mJarCacheTransport->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; @@ -378,10 +377,10 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, return NS_ERROR_OUT_OF_MEMORY; nsCOMPtr<nsIInputStream> jarBaseIn; - rv = jarBaseChannel->OpenInputStream(0, -1, getter_AddRefs(jarBaseIn)); + rv = jarBaseChannel->OpenInputStream(getter_AddRefs(jarBaseIn)); if (NS_FAILED(rv)) return rv; - rv = mJarCacheTransport->AsyncWrite(jarBaseIn, 0, -1, nsnull, downloadObserver); + rv = mJarCacheTransport->AsyncWrite(jarBaseIn, nsnull, downloadObserver); } return rv; } @@ -434,25 +433,28 @@ nsJARChannel::ExtractJARElement(nsIFileChannel* jarBaseFile) NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransportFromFileSystem(this, mCommand, - mBufferSegmentSize, mBufferMaxSize, + rv = fts->CreateTransportFromFileSystem(this, getter_AddRefs(mJarExtractionTransport)); if (NS_FAILED(rv)) return rv; + rv = mJarExtractionTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = mJarExtractionTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; rv = mJarExtractionTransport->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; - rv = mJarExtractionTransport->AsyncRead(mStartPosition, mReadCount, nsnull, this); + rv = mJarExtractionTransport->AsyncRead(this, nsnull); return rv; } NS_IMETHODIMP -nsJARChannel::AsyncWrite(nsIInputStream* fromStream, PRUint32 startPosition, - PRInt32 writeCount, - nsISupports* ctxt, - nsIStreamObserver* observer) +nsJARChannel::AsyncWrite(nsIInputStream* fromStream, + nsIStreamObserver* observer, + nsISupports* ctxt) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::AsyncWrite"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP @@ -540,6 +542,90 @@ nsJARChannel::GetContentLength(PRInt32* aContentLength) return NS_OK; } +NS_IMETHODIMP +nsJARChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsJARChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsJARChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mStartPosition; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + mStartPosition = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mReadCount; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetTransferCount(PRInt32 aTransferCount) +{ + mReadCount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsJARChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsJARChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -711,7 +797,8 @@ nsJARChannel::GetInputStream(nsIInputStream* *aInputStream) NS_IMETHODIMP nsJARChannel::GetOutputStream(nsIOutputStream* *aOutputStream) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::GetOutputStream"); + return NS_ERROR_NOT_IMPLEMENTED; } //////////////////////////////////////////////////////////////////////////////// @@ -720,7 +807,8 @@ nsJARChannel::GetOutputStream(nsIOutputStream* *aOutputStream) NS_IMETHODIMP nsJARChannel::EnumerateEntries(const char *aRoot, nsISimpleEnumerator **_retval) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::EnumerateEntries"); + return NS_ERROR_NOT_IMPLEMENTED; } //////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/modules/libjar/nsJARChannel.h b/mozilla/modules/libjar/nsJARChannel.h index 3c03b0622ae..2bba7d4645b 100644 --- a/mozilla/modules/libjar/nsJARChannel.h +++ b/mozilla/modules/libjar/nsJARChannel.h @@ -69,23 +69,13 @@ public: static NS_METHOD Create(nsISupports* aOuter, REFNSIID aIID, void **aResult); - nsresult Init(nsIJARProtocolHandler* aHandler, - const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); - + nsresult Init(nsIJARProtocolHandler* aHandler, nsIURI* uri); nsresult ExtractJARElement(nsIFileChannel* jarFileChannel); nsresult GetCacheFile(nsIFile* *cacheFile); friend class nsJARDownloadObserver; protected: - char* mCommand; nsCOMPtr<nsIJARURI> mURI; nsCOMPtr<nsILoadGroup> mLoadGroup; nsCOMPtr<nsIInterfaceRequestor> mCallbacks; @@ -106,6 +96,7 @@ protected: nsCOMPtr<nsIZipReader> mJAR; PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + nsresult mStatus; PRMonitor* mMonitor; nsCOMPtr<nsIChannel> mJarCacheTransport; diff --git a/mozilla/modules/libjar/nsJARProtocolHandler.cpp b/mozilla/modules/libjar/nsJARProtocolHandler.cpp index 2a47b9e6952..b24306654f8 100644 --- a/mozilla/modules/libjar/nsJARProtocolHandler.cpp +++ b/mozilla/modules/libjar/nsJARProtocolHandler.cpp @@ -117,14 +117,7 @@ nsJARProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsJARProtocolHandler::NewChannel(nsIURI* uri, nsIChannel* *result) { nsresult rv; @@ -132,8 +125,7 @@ nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, rv = nsJARChannel::Create(nsnull, NS_GET_IID(nsIJARChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(this, verb, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(this, uri); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp index 30b9257ec7b..c4c9e0fe3fd 100644 --- a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp @@ -802,7 +802,7 @@ NS_IMETHODIMP pluginInstanceOwner :: GetURL(const char *aURL, const char *aTarge { // Create an absolute URL char* absURIStr; - rv = NS_MakeAbsoluteURI(aURL, uri, &absURIStr); + rv = NS_MakeAbsoluteURI(&absURIStr, aURL, uri); nsAutoString fullurl(absURIStr); nsCRT::free(absURIStr); diff --git a/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp b/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp index 30b9257ec7b..c4c9e0fe3fd 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp @@ -802,7 +802,7 @@ NS_IMETHODIMP pluginInstanceOwner :: GetURL(const char *aURL, const char *aTarge { // Create an absolute URL char* absURIStr; - rv = NS_MakeAbsoluteURI(aURL, uri, &absURIStr); + rv = NS_MakeAbsoluteURI(&absURIStr, aURL, uri); nsAutoString fullurl(absURIStr); nsCRT::free(absURIStr); diff --git a/mozilla/netwerk/base/public/nsIChannel.idl b/mozilla/netwerk/base/public/nsIChannel.idl index 682bf3943f1..f8aa9d0ed4e 100644 --- a/mozilla/netwerk/base/public/nsIChannel.idl +++ b/mozilla/netwerk/base/public/nsIChannel.idl @@ -34,140 +34,83 @@ interface nsIFile; typedef unsigned long nsLoadFlags; /** - * nsIChannel is the abstract base class for transports and URLs. - * It's abstract in that it doesn't provide a means to specify the - * location/destination of the data being accessed. + * The nsIChannel interface allows the user to construct I/O requests for + * specific protocols, and manage them in a uniform way. Once a channel + * is created (via nsIIOService::NewChannel), parameters for that request + * may be set by using the channel attributes, or by QueryInterfacing to a + * subclass of nsIChannel for protocol-specific parameters. Then the actual + * request can be issued in one of several ways: + * + * - AsyncRead and AsyncWrite allow for asynchronous requests, calling + * back the user's stream listener or observer, + * - OpenInputStream and OpenOutputStream allow for synchronous reads + * and writes on the underlying channel. + * + * After a request has been completed, the channel is still valid for + * accessing protocol-specific results. For example, QueryInterfacing to + * nsIHTTPChannel allows response headers to be retrieved that result from + * http transactions. + * + * Note that a channel is really only valid for one request. Reusing a channel + * after a request has completed for a subsequent request may have undefined + * results, depending on the channel implementation. + * + * Also of note are a special kind of channel called "transports." Transports + * also implement the nsIChannel interface, but operate at a lower level from + * protocol channels. The socket and file transports are notable implementations + * of transports and allow higher level channels to be implemented. The cache + * may also behave as a transport, and possibly things like sound playing services + * etc. Transports usually operate in a separate thread and often multiplex + * multiple requests for the same kind of service or resources. */ -[scriptable, uuid(2d905684-8b5c-11d3-8cd9-0060b0fc14a3)] +[scriptable, uuid(1788e79e-f947-11d3-8cda-0060b0fc14a3)] interface nsIChannel : nsIRequest { + //////////////////////////////////////////////////////////////////////////// + // nsIChannel accessors + //////////////////////////////////////////////////////////////////////////// + /** * Returns the original URL used to construct the channel. - */ - readonly attribute nsIURI originalURI; - - /** - * Returns the URL to which the channel currently refers. - */ - readonly attribute nsIURI URI; - - /** - * Opens a blocking input stream to the URL's specified source. - * @param startPosition - The offset from the start of the data - * from which to read. - * @param readCount - The number of bytes to read. If -1, everything - * up to the end of the data is read. If greater than the end of - * the data, the amount available is returned in the stream. - */ - nsIInputStream openInputStream(in unsigned long startPosition, - in long readCount); - - /** - * Opens a blocking output stream to the URL's specified destination. - * @param startPosition - The offset from the start of the data - * from which to begin writing. - */ - nsIOutputStream openOutputStream(in unsigned long startPosition); - - /** - * Opens the channel asynchronously. The nsIStreamObserver's OnStartRequest - * method is called back when the channel actually becomes open, providing - * the content type. Its OnStopRequest method is called when the channel - * becomes closed. - */ - void asyncOpen(in nsIStreamObserver observer, - in nsISupports ctxt); - - /** - * Reads asynchronously from the URL's specified source. Notifications - * are provided to the stream listener on the thread of the specified - * event queue. - * The startPosition argument designates the offset in the source where - * the data will be read. - * If the readCount == -1 then all the available data is delivered to - * the stream listener. - */ - void asyncRead(in unsigned long startPosition, - in long readCount, - in nsISupports ctxt, - in nsIStreamListener listener); - - /** - * Writes asynchronously to the URL's specified destination. Notifications - * are provided to the stream observer on the thread of the specified - * event queue. - * The startPosition argument designates the offset in the destination where - * the data will be written. - * If the writeCount == -1, then all the available data in the input - * stream is written. - */ - void asyncWrite(in nsIInputStream fromStream, - in unsigned long startPosition, - in long writeCount, - in nsISupports ctxt, - in nsIStreamObserver observer); - - /** - * Load attribute flags. These may be or'd together. + * This is used in the case of a redirect or URI "resolution" (e.g. + * resolving a resource: URI to a file: URI) so that the original + * pre-redirect URI can still be obtained. * - * Note that more will follow for each protocol's implementation of a channel, - * although channel writers have to be careful to not let the flag bits - * overlap. Otherwise, users won't be able to create a single flag word - * of load attributes that applies to a number of different channel types. + * Note that this is distinctly different from the http referrer + * (referring URI) which is typically the page that contained the + * original URI (accessible from nsIHTTPChannel). */ - const unsigned long LOAD_NORMAL = 0; /* no special load attributes -- use defaults */ - const unsigned long LOAD_BACKGROUND = 1 << 0; /* don't deliver status notifications to the - * nsIProgressEventSink, or keep this load from - * completing the nsILoadGroup it may belong to */ + attribute nsIURI originalURI; - const unsigned long LOAD_DOCUMENT_URI = 1 << 1; - const unsigned long LOAD_RETARGETED_DOCUMENT_URI = 1 << 2; /* if the end consumer for this - load has been retargeted after - discovering it's content, this flag - will be set */ - // - // The following flags control caching behavior. Not all protocols pay - // attention to all these flags, but they are applicable to more than one - // protocol, so they are defined here. - // + /** + * Returns the URL to which the channel currently refers. If a redirect + * or URI resolution occurs, this accessor returns the current location + * to which the channel is referring. + */ + attribute nsIURI URI; - // Don't store data in the disk cache. This can be used to preserve - // privacy, e.g. so that no https transactions are recorded, or to avoid - // caching a stream to disk that is already stored in a local file, - // e.g. the mailbox: protocol. - const unsigned long INHIBIT_PERSISTENT_CACHING = 1 << 8; + /** + * Accesses the start offset from the beginning of the data from/to which + * reads/writes will occur. Users may set the transferOffset before making + * any of the following requests: asyncOpen, asyncRead, asyncWrite, + * openInputStream, openOutputstream. + */ + attribute unsigned long transferOffset; - // Force an end-to-end download of content data from the origin server (and - // any intervening proxies that sit between it and the client), e.g. this - // flag is used for a shift-reload. - const unsigned long FORCE_RELOAD = 1 << 9; - - // Force revalidation with server (or proxy) to verify that cached content - // is up-to-date, e.g. by comparing last-modified date on server with that - // of the cached version. For example, this flag is used when the reload - // button is pressed. - const unsigned long FORCE_VALIDATION = 1 << 10; - - // If the CACHE_AS_FILE flag is set, any stream content is stored in the - // cache as a single disk file. Content will not be cached in the memory - // cache nor will it be stored in any other type of cache, e.g. a flat-file - // cache database. This is used to implement the jar protocol handler and - // to provide the stream-as-file semantics required by the classic browser - // plugin API. - const unsigned long CACHE_AS_FILE = 1 << 11; - - // When cache data is potentially out of date, it can be revalidated with - // the origin server to see if the content needs to be reloaded. The - // following four flags control how often this validation occurs. - // These flags are commonly used for "normal" loading. Note that - // the VALIDATE_HEURISTICALLY and VALIDATE_ONCE_PER_SESSION flags can be - // combined to validate heuristically but no more than once per session. - // - const unsigned long VALIDATE_NEVER = 1 << 12; - const unsigned long VALIDATE_ALWAYS = 1 << 13; - const unsigned long VALIDATE_ONCE_PER_SESSION = 1 << 14; - const unsigned long VALIDATE_HEURISTICALLY = 1 << 15; - + /** + * Accesses the count of bytes to be transfered. For openInputStream and + * asyncRead, this specifies the amount to read, for asyncWrite, this + * specifies the amount to write (note that for openOutputStream, the + * end of the data can be signified simply by closing the stream). + * If the transferCount is set after reading has been initiated, the + * amount specified will become the current remaining amount to read + * before the channel is closed (this can be useful if the content + * length is encoded at the start of the stream). + * + * A transferCount value of -1 means the amount is unspecified, i.e. + * read or write all the data that is available. + */ + attribute long transferCount; /** * Accesses the load attributes for the channel. E.g. setting the load @@ -187,15 +130,19 @@ interface nsIChannel : nsIRequest attribute string contentType; /** - * Returns the length of the data assiciated with the channel if available. + * Returns the length of the data associated with the channel if available. * If the length is unknown then -1 is returned. */ - readonly attribute long contentLength; + attribute long contentLength; /** * Accesses the owner corresponding to the entity that is * responsible for this channel. Used by security code to grant - * or diminish privileges to mobile code loaded from this channel. + * or deny privileges to mobile code loaded from this channel. + * + * Note: This is a strong reference to the owner, so if the owner is also + * holding a pointer to the channel, care must be taken to explicitly drop + * its reference to the channel -- otherwise a leak will result. */ attribute nsISupports owner; @@ -214,9 +161,180 @@ interface nsIChannel : nsIRequest /** * Any security information about this channel. This can be null. */ - readonly attribute nsISupports securityInfo; + /** + * Accesses the buffer segment size. The buffer segment size is used as + * the initial size for any transfer buffers, and the increment size for + * whenever the buffer space needs to be grown. + * (Note this parameter is passed along to any underlying nsIPipe objects.) + * If unspecified, the channel implementation picks a default. + */ + attribute unsigned long bufferSegmentSize; + + /** + * Accesses the buffer maximum size. The buffer maximum size is the limit + * size that buffer will be grown to before suspending the channel. + * (Note this parameter is passed along to any underlying nsIPipe objects.) + * If unspecified, the channel implementation picks a default. + */ + attribute unsigned long bufferMaxSize; + + /** + * Returns true if the data from this channel should be cached. Local files + * report false because they exist on the local disk and need not be cached. + * Input stream channels, data protocol, datetime protocol and finger + * protocol channels also should not be cached. Http and ftp on the other + * hand should. Note that the value of this attribute doesn't reflect any + * http headers that may specify that this channel should not be cached. + */ + readonly attribute boolean shouldCache; + + /** + * Setting pipeliningAllowed causes the load of a URL (issued via asyncOpen, + * asyncRead or asyncWrite) to be deferred in order to allow the request to + * be pipelined for greater throughput efficiency. Pipelined requests will + * be forced to load when the first non-pipelined request is issued. + */ + attribute boolean pipeliningAllowed; + + //////////////////////////////////////////////////////////////////////////// + // Load attribute flags. These may be or'd together. + //////////////////////////////////////////////////////////////////////////// + /** + * Note that more will follow for each protocol's implementation of a channel, + * although channel writers have to be careful to not let the flag bits + * overlap. Otherwise, users won't be able to create a single flag word + * of load attributes that applies to a number of different channel types. + */ + + /** + * No special load attributes -- use defaults: + */ + const unsigned long LOAD_NORMAL = 0; + + + /** + * Don't deliver status notifications to the nsIProgressEventSink, or keep + * this load from completing the nsILoadGroup it may belong to: + */ + const unsigned long LOAD_BACKGROUND = 1 << 0; + + const unsigned long LOAD_DOCUMENT_URI = 1 << 1; + + /** + * If the end consumer for this load has been retargeted after discovering + * it's content, this flag will be set: + */ + const unsigned long LOAD_RETARGETED_DOCUMENT_URI = 1 << 2; + + //////////////////////////////////////////////////////////////////////////// + /** + * The following flags control caching behavior. Not all protocols pay + * attention to all these flags, but they are applicable to more than one + * protocol, so they are defined here. + */ + + /** + * Don't store data in the disk cache. This can be used to preserve + * privacy, e.g. so that no https transactions are recorded, or to avoid + * caching a stream to disk that is already stored in a local file, + * e.g. the mailbox: protocol. + */ + const unsigned long INHIBIT_PERSISTENT_CACHING = 1 << 8; + + /** + * Force an end-to-end download of content data from the origin server (and + * any intervening proxies that sit between it and the client), e.g. this + * flag is used for a shift-reload. + */ + const unsigned long FORCE_RELOAD = 1 << 9; + + /** + * Force revalidation with server (or proxy) to verify that cached content + * is up-to-date, e.g. by comparing last-modified date on server with that + * of the cached version. For example, this flag is used when the reload + * button is pressed. + */ + const unsigned long FORCE_VALIDATION = 1 << 10; + + /** + * If the CACHE_AS_FILE flag is set, any stream content is stored in the + * cache as a single disk file. Content will not be cached in the memory + * cache nor will it be stored in any other type of cache, e.g. a flat-file + * cache database. This is used to implement the jar protocol handler and + * to provide the stream-as-file semantics required by the classic browser + * plugin API. + */ + const unsigned long CACHE_AS_FILE = 1 << 11; + + /** + * When cache data is potentially out of date, it can be revalidated with + * the origin server to see if the content needs to be reloaded. The + * following four flags control how often this validation occurs. + * These flags are commonly used for "normal" loading. Note that + * the VALIDATE_HEURISTICALLY and VALIDATE_ONCE_PER_SESSION flags can be + * combined to validate heuristically but no more than once per session. + */ + const unsigned long VALIDATE_NEVER = 1 << 12; + const unsigned long VALIDATE_ALWAYS = 1 << 13; + const unsigned long VALIDATE_ONCE_PER_SESSION = 1 << 14; + const unsigned long VALIDATE_HEURISTICALLY = 1 << 15; + + //////////////////////////////////////////////////////////////////////////// + // nsIChannel operations + //////////////////////////////////////////////////////////////////////////// + + /** + * Opens a blocking input stream to the URL's specified source. + * @param startPosition - The offset from the start of the data + * from which to read. + * @param readCount - The number of bytes to read. If -1, everything + * up to the end of the data is read. If greater than the end of + * the data, the amount available is returned in the stream. + */ + nsIInputStream openInputStream(); + + /** + * Opens a blocking output stream to the URL's specified destination. + * @param startPosition - The offset from the start of the data + * from which to begin writing. + */ + nsIOutputStream openOutputStream(); + + /** + * Opens the channel asynchronously. The nsIStreamObserver's OnStartRequest + * method is called back when the channel actually becomes open, providing + * the content type. Its OnStopRequest method is called when the channel + * becomes closed. + */ + void asyncOpen(in nsIStreamObserver observer, + in nsISupports ctxt); + + /** + * Reads asynchronously from the URL's specified source. Notifications + * are provided to the stream listener on the thread of the specified + * event queue. + * The startPosition argument designates the offset in the source where + * the data will be read. + * If the readCount == -1 then all the available data is delivered to + * the stream listener. + */ + void asyncRead(in nsIStreamListener listener, + in nsISupports ctxt); + + /** + * Writes asynchronously to the URL's specified destination. Notifications + * are provided to the stream observer on the thread of the specified + * event queue. + * The startPosition argument designates the offset in the destination where + * the data will be written. + * If the writeCount == -1, then all the available data in the input + * stream is written. + */ + void asyncWrite(in nsIInputStream fromStream, + in nsIStreamObserver observer, + in nsISupports ctxt); }; //////////////////////////////////////////////////////////////////////////////// @@ -227,29 +345,23 @@ interface nsIChannel : nsIRequest * associated content type. Input stream channels only allow the input stream * to be accessed, not the output stream. */ -[scriptable, uuid(bfbf843a-8b89-11d3-8cd9-0060b0fc14a3)] +[scriptable, uuid(43070d6a-f947-11d3-8cda-0060b0fc14a3)] interface nsIInputStreamChannel : nsIChannel { void init(in nsIURI uri, - in string contentType, - in long contentLength, in nsIInputStream inStr, - in nsILoadGroup aLoadGroup, - in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes, - in nsIURI originalURI, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + in string contentType, + in long contentLength); }; %{C++ #define NS_INPUTSTREAMCHANNEL_CID \ -{ /* 436d84f8-8b8a-11d3-8cd9-0060b0fc14a3 */ \ - 0x436d84f8, \ - 0x8b8a, \ +{ /* 54d0d8e6-f947-11d3-8cda-0060b0fc14a3 */ \ + 0x54d0d8e6, \ + 0xf947, \ 0x11d3, \ - {0x8c, 0xd9, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ + {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } %} @@ -261,32 +373,27 @@ interface nsIInputStreamChannel : nsIChannel * of a simple nsIChannel that is constructed from a single nsIFile and * associated content type. */ -[scriptable, uuid(6eef6444-c7e3-11d3-8cda-0060b0fc14a3)] +[scriptable, uuid(68a26506-f947-11d3-8cda-0060b0fc14a3)] interface nsIFileChannel : nsIChannel { void init(in nsIFile file, - in long mode, - in string contentType, - in long contentLength, - in nsILoadGroup aLoadGroup, - in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes, - in nsIURI originalURI, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + in long ioFlags, + in long perm); readonly attribute nsIFile file; + attribute long ioFlags; + attribute long permissions; }; %{C++ -#define NS_FILECHANNEL_CLASSNAME "File Channel" -#define NS_FILECHANNEL_PROGID "component://netscape/network/file-channel" +#define NS_LOCALFILECHANNEL_CLASSNAME "Local File Channel" +#define NS_LOCALFILECHANNEL_PROGID "component://netscape/network/local-file-channel" -#define NS_FILECHANNEL_CID \ -{ /* 7036066e-c7e3-11d3-8cda-0060b0fc14a3 */ \ - 0x7036066e, \ - 0xc7e3, \ +#define NS_LOCALFILECHANNEL_CID \ +{ /* 6d5b2d44-f947-11d3-8cda-0060b0fc14a3 */ \ + 0x6d5b2d44, \ + 0xf947, \ 0x11d3, \ {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } diff --git a/mozilla/netwerk/base/public/nsIFileStreams.idl b/mozilla/netwerk/base/public/nsIFileStreams.idl index c4ca7de9685..588c443092a 100644 --- a/mozilla/netwerk/base/public/nsIFileStreams.idl +++ b/mozilla/netwerk/base/public/nsIFileStreams.idl @@ -27,13 +27,13 @@ [scriptable, uuid(e3d56a20-c7ec-11d3-8cda-0060b0fc14a3)] interface nsIFileInputStream : nsIInputStream { - void init(in nsILocalFile file); + void init(in nsIFile file, in long ioFlags, in long perm); }; [scriptable, uuid(e6f68040-c7ec-11d3-8cda-0060b0fc14a3)] interface nsIFileOutputStream : nsIOutputStream { - void init(in nsILocalFile file, in long flags, in long mode); + void init(in nsIFile file, in long ioFlags, in long perm); }; [scriptable, uuid(e9de5df0-c7ec-11d3-8cda-0060b0fc14a3)] @@ -66,10 +66,10 @@ interface nsIBufferedOutputStream : nsIOutputStream //////////////////////////////////////////////////////////////////////////////// -#define NS_FILEINPUTSTREAM_CLASSNAME "File Input Stream" -#define NS_FILEINPUTSTREAM_PROGID "component://netscape/network/file-input-stream" +#define NS_LOCALFILEINPUTSTREAM_CLASSNAME "Local File Input Stream" +#define NS_LOCALFILEINPUTSTREAM_PROGID "component://netscape/network/file-input-stream" -#define NS_FILEINPUTSTREAM_CID \ +#define NS_LOCALFILEINPUTSTREAM_CID \ { /* be9a53ae-c7e9-11d3-8cda-0060b0fc14a3 */ \ 0xbe9a53ae, \ 0xc7e9, \ @@ -77,10 +77,10 @@ interface nsIBufferedOutputStream : nsIOutputStream {0x8c, 0xda, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } -#define NS_FILEOUTPUTSTREAM_CLASSNAME "File Output Stream" -#define NS_FILEOUTPUTSTREAM_PROGID "component://netscape/network/file-output-stream" +#define NS_LOCALFILEOUTPUTSTREAM_CLASSNAME "Local File Output Stream" +#define NS_LOCALFILEOUTPUTSTREAM_PROGID "component://netscape/network/file-output-stream" -#define NS_FILEOUTPUTSTREAM_CID \ +#define NS_LOCALFILEOUTPUTSTREAM_CID \ { /* c272fee0-c7e9-11d3-8cda-0060b0fc14a3 */ \ 0xc272fee0, \ 0xc7e9, \ @@ -123,32 +123,24 @@ interface nsIBufferedOutputStream : nsIOutputStream #include "nsILocalFile.h" #include "nsIInputStream.h" #include "nsIOutputStream.h" -#include "prio.h" // for read/write modes, etc. +#include "prio.h" // for read/write flags, permissions, etc. +// This will QI the file argument to an nsILocalFile in the Init method. inline nsresult -NS_NewFileChannel(nsIFile* file, - PRInt32 mode, - const char* contentType, - PRUint32 contentLength, - nsILoadGroup* group, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIFileChannel **result) +NS_NewLocalFileChannel(nsIFileChannel **result, + nsIFile* file, + PRInt32 ioFlags = -1, + PRInt32 perm = -1) { nsresult rv; nsCOMPtr<nsIFileChannel> channel; - static NS_DEFINE_CID(kFileChannelCID, NS_FILECHANNEL_CID); - rv = nsComponentManager::CreateInstance(kFileChannelCID, + static NS_DEFINE_CID(kLocalFileChannelCID, NS_LOCALFILECHANNEL_CID); + rv = nsComponentManager::CreateInstance(kLocalFileChannelCID, nsnull, NS_GET_IID(nsIFileChannel), getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; - rv = channel->Init(file, mode, contentType, contentLength, group, - notificationCallbacks, loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize); + rv = channel->Init(file, ioFlags, perm); if (NS_FAILED(rv)) return rv; *result = channel; @@ -156,20 +148,22 @@ NS_NewFileChannel(nsIFile* file, return NS_OK; } +// This will QI the file argument to an nsILocalFile in the Init method. inline nsresult -NS_NewFileInputStream(nsIFile* file, nsIInputStream* *result) +NS_NewLocalFileInputStream(nsIInputStream* *result, + nsIFile* file, + PRInt32 ioFlags = -1, + PRInt32 perm = -1) { nsresult rv; nsCOMPtr<nsIFileInputStream> in; - static NS_DEFINE_CID(kFileInputStreamCID, NS_FILEINPUTSTREAM_CID); - rv = nsComponentManager::CreateInstance(kFileInputStreamCID, + static NS_DEFINE_CID(kLocalFileInputStreamCID, NS_LOCALFILEINPUTSTREAM_CID); + rv = nsComponentManager::CreateInstance(kLocalFileInputStreamCID, nsnull, NS_GET_IID(nsIFileInputStream), getter_AddRefs(in)); if (NS_FAILED(rv)) return rv; - nsCOMPtr<nsILocalFile> localFile = do_QueryInterface(file, &rv); - if (NS_FAILED(rv)) return rv; - rv = in->Init(localFile); + rv = in->Init(file, ioFlags, perm); if (NS_FAILED(rv)) return rv; *result = in; @@ -177,21 +171,22 @@ NS_NewFileInputStream(nsIFile* file, nsIInputStream* *result) return NS_OK; } +// This will QI the file argument to an nsILocalFile in the Init method. inline nsresult -NS_NewFileOutputStream(nsIFile* file, PRInt32 flags, PRInt32 mode, - nsIOutputStream* *result) +NS_NewLocalFileOutputStream(nsIOutputStream* *result, + nsIFile* file, + PRInt32 ioFlags = -1, + PRInt32 perm = -1) { nsresult rv; nsCOMPtr<nsIFileOutputStream> out; - static NS_DEFINE_CID(kFileOutputStreamCID, NS_FILEOUTPUTSTREAM_CID); - rv = nsComponentManager::CreateInstance(kFileOutputStreamCID, + static NS_DEFINE_CID(kLocalFileOutputStreamCID, NS_LOCALFILEOUTPUTSTREAM_CID); + rv = nsComponentManager::CreateInstance(kLocalFileOutputStreamCID, nsnull, NS_GET_IID(nsIFileOutputStream), getter_AddRefs(out)); if (NS_FAILED(rv)) return rv; - nsCOMPtr<nsILocalFile> localFile = do_QueryInterface(file, &rv); - if (NS_FAILED(rv)) return rv; - rv = out->Init(localFile, flags, mode); + rv = out->Init(file, ioFlags, perm); if (NS_FAILED(rv)) return rv; *result = out; @@ -202,8 +197,9 @@ NS_NewFileOutputStream(nsIFile* file, PRInt32 flags, PRInt32 mode, //////////////////////////////////////////////////////////////////////////////// inline nsresult -NS_NewBufferedInputStream(nsIInputStream* str, PRUint32 bufferSize, - nsIInputStream* *result) +NS_NewBufferedInputStream(nsIInputStream* *result, + nsIInputStream* str, + PRUint32 bufferSize) { nsresult rv; nsCOMPtr<nsIBufferedInputStream> in; @@ -222,8 +218,9 @@ NS_NewBufferedInputStream(nsIInputStream* str, PRUint32 bufferSize, } inline nsresult -NS_NewBufferedOutputStream(nsIOutputStream* str, PRUint32 bufferSize, - nsIOutputStream* *result) +NS_NewBufferedOutputStream(nsIOutputStream* *result, + nsIOutputStream* str, + PRUint32 bufferSize) { nsresult rv; nsCOMPtr<nsIBufferedOutputStream> out; diff --git a/mozilla/netwerk/base/public/nsIFileTransportService.idl b/mozilla/netwerk/base/public/nsIFileTransportService.idl index f5bde0ac187..02e9ed93947 100644 --- a/mozilla/netwerk/base/public/nsIFileTransportService.idl +++ b/mozilla/netwerk/base/public/nsIFileTransportService.idl @@ -36,24 +36,16 @@ interface nsIFile; interface nsIFileTransportService : nsISupports { nsIChannel createTransport(in nsIFile file, - in long mode, - in string command, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + in long ioFlags, + in long perm); // 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 unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + in long contentLength); - nsIChannel createTransportFromFileSystem(in nsIFileSystem fsObj, - in string command, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + nsIChannel createTransportFromFileSystem(in nsIFileSystem fsObj); 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 b35fcca2084..6244006a4f8 100644 --- a/mozilla/netwerk/base/public/nsIIOService.idl +++ b/mozilla/netwerk/base/public/nsIIOService.idl @@ -42,21 +42,6 @@ interface nsIOutputStream; [scriptable, uuid(ab7c3a84-d488-11d3-8cda-0060b0fc14a3)] interface nsIIOService : nsISupports { - /** - * constants for the Escape mask in the call to URLEscape - */ - const short url_Scheme = (1<<0); - const short url_Username = (1<<1); - const short url_Password = (1<<2); - const short url_Host = (1<<3); - const short url_Directory = (1<<4); - const short url_FileBaseName = (1<<5); - const short url_FileExtension = (1<<6); - const short url_Param = (1<<7); - const short url_Query = (1<<8); - const short url_Ref = (1<<9); - const short url_Forced = (1<<10); - /** * Returns a protocol handler for a given URI scheme. */ @@ -82,28 +67,20 @@ interface nsIIOService : nsISupports * URL to become different from the original URL. If NULL, the aURI parameter * will be used as the originalURI instead. */ - nsIChannel newChannelFromURI(in string verb, - in nsIURI aURI, - in nsILoadGroup aLoadGroup, - in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes, - in nsIURI originalURI, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + nsIChannel newChannelFromURI(in nsIURI aURI); /** * Convenience routine that first creates a URI by calling NewURI, and * then passes the URI to NewChannelFromURI. + * + * @param originalURI - Specifies the original URI which caused the creation + * of this channel. This can occur when the construction of one channel + * (e.g. for resource:) causes another channel to be created on its behalf + * (e.g. a file: channel), or if a redirect occurs, causing the current + * URL to become different from the original URL. If NULL, the aURI parameter + * will be used as the originalURI instead. */ - nsIChannel newChannel(in string verb, - in string aSpec, - in nsIURI aBaseURI, - in nsILoadGroup aLoadGroup, - in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes, - in nsIURI originalURI, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + nsIChannel newChannel(in string aSpec, in nsIURI aBaseURI); /** * Returns true if networking is in "offline" mode. When in offline mode, attempts @@ -136,6 +113,21 @@ interface nsIIOService : nsISupports out unsigned long schemeEndPos, out string scheme); + /** + * Constants for the mask in the call to Escape + */ + const short url_Scheme = (1<<0); + const short url_Username = (1<<1); + const short url_Password = (1<<2); + const short url_Host = (1<<3); + const short url_Directory = (1<<4); + const short url_FileBaseName = (1<<5); + const short url_FileExtension = (1<<6); + const short url_Param = (1<<7); + const short url_Query = (1<<8); + const short url_Ref = (1<<9); + const short url_Forced = (1<<10); + /** * Encode characters into % escaped hexcodes. */ @@ -173,4 +165,5 @@ interface nsIIOService : nsISupports {0x93, 0x37, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40} \ } +#define DUD 3.14 %} diff --git a/mozilla/netwerk/base/public/nsIProtocolHandler.idl b/mozilla/netwerk/base/public/nsIProtocolHandler.idl index 9f8e048a2ed..b019992bb84 100644 --- a/mozilla/netwerk/base/public/nsIProtocolHandler.idl +++ b/mozilla/netwerk/base/public/nsIProtocolHandler.idl @@ -52,14 +52,7 @@ interface nsIProtocolHandler : nsISupports * URL to become different from the original URL. If NULL, the aURI parameter * will be used as the originalURI instead. */ - nsIChannel newChannel(in string verb, - in nsIURI aURI, - in nsILoadGroup aLoadGroup, - in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes, - in nsIURI originalURI, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + nsIChannel newChannel(in nsIURI aURI); }; %{C++ diff --git a/mozilla/netwerk/base/public/nsIRequest.idl b/mozilla/netwerk/base/public/nsIRequest.idl index ad2c76f1e09..88c0b4ffe4d 100644 --- a/mozilla/netwerk/base/public/nsIRequest.idl +++ b/mozilla/netwerk/base/public/nsIRequest.idl @@ -33,10 +33,18 @@ interface nsIRequest : nsISupports boolean isPending(); /** - * Cancels the current request. This will close any open input or - * output streams and terminate any async requests. + * Returns any error status associated with the request. */ - void cancel(); + readonly attribute nsresult status; + + /** + * Cancels the current request. This will close any open input or + * output streams and terminate any async requests. Users should + * normally pass NS_BINDING_ABORTED, although other errors may also + * be passed. The error passed in will become the value of the + * status attribute. + */ + void cancel(in nsresult status); /** * Suspends the current requests. This may have the effect of closing diff --git a/mozilla/netwerk/base/public/nsISocketTransportService.idl b/mozilla/netwerk/base/public/nsISocketTransportService.idl index 183d203c2af..9aeef79295c 100644 --- a/mozilla/netwerk/base/public/nsISocketTransportService.idl +++ b/mozilla/netwerk/base/public/nsISocketTransportService.idl @@ -55,9 +55,10 @@ interface nsISocketTransportService : nsISupports * Connection: close header (for HTTP) and timeouts! */ boolean reuseTransport(in nsIChannel i_Transport); - void init (); - void shutdown (); - void wakeup (in nsIChannel i_Transport); + + void init(); + void shutdown(); + void wakeup(in nsIChannel i_Transport); }; %{C++ diff --git a/mozilla/netwerk/base/public/nsNetUtil.h b/mozilla/netwerk/base/public/nsNetUtil.h index 9d5068e3efd..e8f4891e286 100644 --- a/mozilla/netwerk/base/public/nsNetUtil.h +++ b/mozilla/netwerk/base/public/nsNetUtil.h @@ -37,47 +37,94 @@ #include "nsCOMPtr.h" #include "nsIHTTPProtocolHandler.h" #include "nsIStreamLoader.h" +#include "prio.h" // for read/write flags, permissions, etc. inline nsresult -NS_NewURI(nsIURI* *result, const char* spec, nsIURI* baseURI = nsnull) +NS_NewURI(nsIURI* *result, + const char* spec, + nsIURI* baseURI = nsnull, + nsIIOService* ioService = nsnull) // pass in nsIIOService to optimize callers { nsresult rv; + + nsIIOService* serv = ioService; static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - + if (serv == nsnull) { + rv = nsServiceManager::GetService(kIOServiceCID, NS_GET_IID(nsIIOService), + (nsISupports**)&serv); + if (NS_FAILED(rv)) return rv; + } + rv = serv->NewURI(spec, baseURI, result); + + if (ioService == nsnull) { + (void)nsServiceManager::ReleaseService(kIOServiceCID, serv); + } return rv; } inline nsresult -NS_NewURI(nsIURI* *result, const nsString& spec, nsIURI* baseURI = nsnull) +NS_NewURI(nsIURI* *result, + const nsString& spec, + nsIURI* baseURI = nsnull, + nsIIOService* ioService = nsnull) // pass in nsIIOService to optimize callers { char* specStr = spec.ToNewUTF8String(); // this forces a single byte char* if (specStr == nsnull) return NS_ERROR_OUT_OF_MEMORY; - nsresult rv = NS_NewURI(result, specStr, baseURI); + nsresult rv = NS_NewURI(result, specStr, baseURI, ioService); nsAllocator::Free(specStr); return rv; } inline nsresult -NS_OpenURI(nsIChannel* *result, nsIURI* uri, nsILoadGroup *aGroup, - nsIInterfaceRequestor *capabilities = nsnull, +NS_OpenURI(nsIChannel* *result, + nsIURI* uri, + nsIIOService* ioService = nsnull, // pass in nsIIOService to optimize callers + nsILoadGroup* loadGroup = nsnull, + nsIInterfaceRequestor* notificationCallbacks = nsnull, nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL, PRUint32 bufferSegmentSize = 0, PRUint32 bufferMaxSize = 0) { nsresult rv; + + nsIIOService* serv = ioService; static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); + if (serv == nsnull) { + rv = nsServiceManager::GetService(kIOServiceCID, NS_GET_IID(nsIIOService), + (nsISupports**)&serv); + if (NS_FAILED(rv)) return rv; + } + + nsIChannel* channel = nsnull; + rv = serv->NewChannelFromURI(uri, &channel); if (NS_FAILED(rv)) return rv; - nsIChannel* channel; - rv = serv->NewChannelFromURI("load", uri, aGroup, capabilities, - loadAttributes, nsnull, - bufferSegmentSize, bufferMaxSize, &channel); - if (NS_FAILED(rv)) return rv; + if (loadGroup) { + rv = channel->SetLoadGroup(loadGroup); + if (NS_FAILED(rv)) return rv; + } + if (notificationCallbacks) { + rv = channel->SetNotificationCallbacks(notificationCallbacks); + if (NS_FAILED(rv)) return rv; + } + if (loadAttributes != nsIChannel::LOAD_NORMAL) { + rv = channel->SetLoadAttributes(loadAttributes); + if (NS_FAILED(rv)) return rv; + } + if (bufferSegmentSize != 0) { + rv = channel->SetBufferSegmentSize(bufferSegmentSize); + if (NS_FAILED(rv)) return rv; + } + if (bufferMaxSize != 0) { + rv = channel->SetBufferMaxSize(bufferMaxSize); + if (NS_FAILED(rv)) return rv; + } + + if (ioService == nsnull) { + (void)nsServiceManager::ReleaseService(kIOServiceCID, serv); + } *result = channel; return rv; @@ -90,17 +137,25 @@ NS_OpenURI(nsIChannel* *result, nsIURI* uri, nsILoadGroup *aGroup, // blown asyncrhonous consumer (via nsIStreamListener) // look at nsIStreamLoader instead. inline nsresult -NS_OpenURI(nsIInputStream* *result, nsIURI* uri) +NS_OpenURI(nsIInputStream* *result, + nsIURI* uri, + nsIIOService* ioService = nsnull, // pass in nsIIOService to optimize callers + nsILoadGroup* loadGroup = nsnull, + nsIInterfaceRequestor* notificationCallbacks = nsnull, + nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL, + PRUint32 bufferSegmentSize = 0, + PRUint32 bufferMaxSize = 0) { nsresult rv; - nsIChannel* channel; + nsCOMPtr<nsIChannel> channel; - rv = NS_OpenURI(&channel, uri, nsnull); + rv = NS_OpenURI(getter_AddRefs(channel), uri, ioService, + loadGroup, notificationCallbacks, loadAttributes, + bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) return rv; nsIInputStream* inStr; - rv = channel->OpenInputStream(0, -1, &inStr); - NS_RELEASE(channel); + rv = channel->OpenInputStream(&inStr); if (NS_FAILED(rv)) return rv; *result = inStr; @@ -108,52 +163,77 @@ NS_OpenURI(nsIInputStream* *result, nsIURI* uri) } inline nsresult -NS_OpenURI(nsIStreamListener* aConsumer, nsISupports* context, nsIURI* uri, - nsILoadGroup *aGroup) +NS_OpenURI(nsIStreamListener* aConsumer, + nsISupports* context, + nsIURI* uri, + nsIIOService* ioService = nsnull, // pass in nsIIOService to optimize callers + nsILoadGroup* loadGroup = nsnull, + nsIInterfaceRequestor* notificationCallbacks = nsnull, + nsLoadFlags loadAttributes = nsIChannel::LOAD_NORMAL, + PRUint32 bufferSegmentSize = 0, + PRUint32 bufferMaxSize = 0) { nsresult rv; - nsIChannel* channel; + nsCOMPtr<nsIChannel> channel; - rv = NS_OpenURI(&channel, uri, aGroup); + rv = NS_OpenURI(getter_AddRefs(channel), uri, ioService, + loadGroup, notificationCallbacks, loadAttributes, + bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv)) return rv; - rv = channel->AsyncRead(0, -1, context, aConsumer); - NS_RELEASE(channel); + rv = channel->AsyncRead(aConsumer, context); return rv; } inline nsresult -NS_MakeAbsoluteURI(const char* spec, nsIURI* baseURI, char* *result) +NS_MakeAbsoluteURI(char* *result, + const char* spec, + nsIURI* baseURI = nsnull, + nsIIOService* ioService = nsnull) // pass in nsIIOService to optimize callers { nsresult rv; NS_ASSERTION(baseURI, "It doesn't make sense to not supply a base URI"); if (spec == nsnull) return baseURI->GetSpec(result); - + + nsIIOService* serv = ioService; static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); + if (serv == nsnull) { + rv = nsServiceManager::GetService(kIOServiceCID, NS_GET_IID(nsIIOService), + (nsISupports**)&serv); + if (NS_FAILED(rv)) return rv; + } PRUint32 startPos, endPos; rv = serv->ExtractScheme(spec, &startPos, &endPos, nsnull); if (NS_SUCCEEDED(rv)) { // if spec has a scheme, then it's already absolute *result = nsCRT::strdup(spec); - return (*result == nsnull) ? NS_ERROR_OUT_OF_MEMORY : NS_OK; + rv = (*result == nsnull) ? NS_ERROR_OUT_OF_MEMORY : NS_OK; } - - return baseURI->Resolve(spec, result); + else { + rv = baseURI->Resolve(spec, result); + } + + if (ioService == nsnull) { + (void)nsServiceManager::ReleaseService(kIOServiceCID, serv); + } + return rv; } inline nsresult -NS_MakeAbsoluteURI(const nsString& spec, nsIURI* baseURI, nsString& result) +NS_MakeAbsoluteURI(nsString& result, + const nsString& spec, + nsIURI* baseURI = nsnull, + nsIIOService* ioService = nsnull) // pass in nsIIOService to optimize callers { char* resultStr; char* specStr = spec.ToNewUTF8String(); if (!specStr) { return NS_ERROR_OUT_OF_MEMORY; } - nsresult rv = NS_MakeAbsoluteURI(specStr, baseURI, &resultStr); + nsresult rv = NS_MakeAbsoluteURI(&resultStr, specStr, baseURI, ioService); nsAllocator::Free(specStr); if (NS_FAILED(rv)) return rv; @@ -163,16 +243,29 @@ NS_MakeAbsoluteURI(const nsString& spec, nsIURI* baseURI, nsString& result) } inline nsresult -NS_NewPostDataStream(PRBool isFile, const char *data, PRUint32 encodeFlags, - nsIInputStream **result) +NS_NewPostDataStream(nsIInputStream **result, + PRBool isFile, + const char *data, + PRUint32 encodeFlags, + nsIIOService* ioService = nsnull) // pass in nsIIOService to optimize callers { nsresult rv; + + nsIIOService* serv = ioService; static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; + if (serv == nsnull) { + rv = nsServiceManager::GetService(kIOServiceCID, NS_GET_IID(nsIIOService), + (nsISupports**)&serv); + if (NS_FAILED(rv)) return rv; + } nsCOMPtr<nsIProtocolHandler> handler; rv = serv->GetProtocolHandler("http", getter_AddRefs(handler)); + + if (ioService == nsnull) { + (void)nsServiceManager::ReleaseService(kIOServiceCID, serv); + } + if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIHTTPProtocolHandler> http = do_QueryInterface(handler, &rv); @@ -182,17 +275,11 @@ NS_NewPostDataStream(PRBool isFile, const char *data, PRUint32 encodeFlags, } inline nsresult -NS_NewInputStreamChannel(nsIURI* uri, - const char* contentType, - PRInt32 contentLength, +NS_NewInputStreamChannel(nsIChannel **result, + nsIURI* uri, nsIInputStream* inStr, - nsILoadGroup* group, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) + const char* contentType, + PRInt32 contentLength) { nsresult rv; nsCOMPtr<nsIInputStreamChannel> channel; @@ -202,9 +289,7 @@ NS_NewInputStreamChannel(nsIURI* uri, NS_GET_IID(nsIInputStreamChannel), getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; - rv = channel->Init(uri, contentType, contentLength, inStr, group, - notificationCallbacks, loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize); + rv = channel->Init(uri, inStr, contentType, contentLength); if (NS_FAILED(rv)) return rv; *result = channel; @@ -213,7 +298,7 @@ NS_NewInputStreamChannel(nsIURI* uri, } inline nsresult -NS_NewLoadGroup(nsIStreamObserver* obs, nsILoadGroup* *result) +NS_NewLoadGroup(nsILoadGroup* *result, nsIStreamObserver* obs) { nsresult rv; nsCOMPtr<nsILoadGroup> group; @@ -259,8 +344,9 @@ NS_NewStreamLoader(nsIStreamLoader* *result, } inline nsresult -NS_NewAsyncStreamObserver(nsIStreamObserver *receiver, nsIEventQueue *eventQueue, - nsIStreamObserver **result) +NS_NewAsyncStreamObserver(nsIStreamObserver **result, + nsIStreamObserver *receiver, + nsIEventQueue *eventQueue) { nsresult rv; nsCOMPtr<nsIAsyncStreamObserver> obs; @@ -279,8 +365,9 @@ NS_NewAsyncStreamObserver(nsIStreamObserver *receiver, nsIEventQueue *eventQueue } inline nsresult -NS_NewAsyncStreamListener(nsIStreamListener *receiver, nsIEventQueue *eventQueue, - nsIStreamListener **result) +NS_NewAsyncStreamListener(nsIStreamListener **result, + nsIStreamListener *receiver, + nsIEventQueue *eventQueue) { nsresult rv; nsCOMPtr<nsIAsyncStreamListener> lsnr; diff --git a/mozilla/netwerk/base/src/nsAsyncStreamListener.cpp b/mozilla/netwerk/base/src/nsAsyncStreamListener.cpp index a636989eb72..af0871b84a2 100644 --- a/mozilla/netwerk/base/src/nsAsyncStreamListener.cpp +++ b/mozilla/netwerk/base/src/nsAsyncStreamListener.cpp @@ -128,11 +128,9 @@ nsStreamListenerEvent::Fire(nsIEventQueue* aEventQueue) //////////////////////////////////////////////////////////////////////////////// -NS_IMPL_THREADSAFE_ADDREF(nsAsyncStreamObserver) -NS_IMPL_THREADSAFE_RELEASE(nsAsyncStreamObserver) -NS_IMPL_QUERY_INTERFACE2(nsAsyncStreamObserver, - nsIAsyncStreamObserver, - nsIStreamObserver) +NS_IMPL_THREADSAFE_ISUPPORTS2(nsAsyncStreamObserver, + nsIAsyncStreamObserver, + nsIStreamObserver) NS_IMPL_ADDREF_INHERITED(nsAsyncStreamListener, nsAsyncStreamObserver); NS_IMPL_RELEASE_INHERITED(nsAsyncStreamListener, nsAsyncStreamObserver); @@ -391,7 +389,7 @@ nsOnDataAvailableEvent::HandleEvent() // the pipe to empty... // if (NS_FAILED(rv)) { - mChannel->Cancel(); + mChannel->Cancel(rv); } } return rv; diff --git a/mozilla/netwerk/base/src/nsFileStreams.cpp b/mozilla/netwerk/base/src/nsFileStreams.cpp index cc621e8d8e7..013255a12d6 100644 --- a/mozilla/netwerk/base/src/nsFileStreams.cpp +++ b/mozilla/netwerk/base/src/nsFileStreams.cpp @@ -102,10 +102,19 @@ nsFileInputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) } NS_IMETHODIMP -nsFileInputStream::Init(nsILocalFile* file) +nsFileInputStream::Init(nsIFile* file, PRInt32 ioFlags, PRInt32 perm) { NS_ASSERTION(mFD == nsnull, "already inited"); - return file->OpenNSPRFileDesc(PR_RDONLY, 0, &mFD); + if (mFD != nsnull) + return NS_ERROR_FAILURE; + nsresult rv; + nsCOMPtr<nsILocalFile> localFile = do_QueryInterface(file, &rv); + if (NS_FAILED(rv)) return rv; + if (ioFlags == -1) + ioFlags = PR_RDONLY; + if (perm == -1) + perm = 0; + return localFile->OpenNSPRFileDesc(ioFlags, perm, &mFD); } NS_IMETHODIMP @@ -165,12 +174,19 @@ nsFileOutputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) } NS_IMETHODIMP -nsFileOutputStream::Init(nsILocalFile* file, PRInt32 flags, PRInt32 mode) +nsFileOutputStream::Init(nsIFile* file, PRInt32 ioFlags, PRInt32 perm) { NS_ASSERTION(mFD == nsnull, "already inited"); if (mFD != nsnull) return NS_ERROR_FAILURE; - return file->OpenNSPRFileDesc(flags, mode, &mFD); + nsresult rv; + nsCOMPtr<nsILocalFile> localFile = do_QueryInterface(file, &rv); + if (NS_FAILED(rv)) return rv; + if (ioFlags == -1) + ioFlags = PR_WRONLY | PR_CREATE_FILE; + if (perm == -1) + perm = 0664; + return localFile->OpenNSPRFileDesc(ioFlags, perm, &mFD); } NS_IMETHODIMP diff --git a/mozilla/netwerk/base/src/nsFileTransport.cpp b/mozilla/netwerk/base/src/nsFileTransport.cpp index 731c2a63164..10ce9f8bfa7 100644 --- a/mozilla/netwerk/base/src/nsFileTransport.cpp +++ b/mozilla/netwerk/base/src/nsFileTransport.cpp @@ -58,7 +58,7 @@ static NS_DEFINE_CID(kProxyObjectManagerCID, NS_PROXYEVENT_MANAGER_CID); #if defined(PR_LOGGING) // -// Log module for SocketTransport logging... +// Log module for nsFileTransport logging... // // To enable logging (see prlog.h for full details): // @@ -171,7 +171,7 @@ public: } nsCOMPtr<nsIInputStream> fileIn; - rv = NS_NewFileInputStream(mFile, getter_AddRefs(fileIn)); + rv = NS_NewLocalFileInputStream(getter_AddRefs(fileIn), mFile, mIOFlags, mPerm); if (NS_FAILED(rv)) { #if DEBUG @@ -190,8 +190,8 @@ public: *aInputStream = fileIn; NS_ADDREF(*aInputStream); #else - rv = NS_NewBufferedInputStream(fileIn, NS_OUTPUT_STREAM_BUFFER_SIZE, - aInputStream); + rv = NS_NewBufferedInputStream(aInputStream, + fileIn, NS_OUTPUT_STREAM_BUFFER_SIZE); #endif // printf("opening %s for reading\n", (const char*)mSpec); @@ -210,18 +210,16 @@ public: } nsCOMPtr<nsIOutputStream> fileOut; - rv = NS_NewFileOutputStream(mFile, - PR_CREATE_FILE | PR_WRONLY, - 0664, - getter_AddRefs(fileOut)); + rv = NS_NewLocalFileOutputStream(getter_AddRefs(fileOut), + mFile, mIOFlags, mPerm); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIOutputStream> bufStr; #ifdef NO_BUFFERING bufStr = fileOut; #else - rv = NS_NewBufferedOutputStream(fileOut, NS_OUTPUT_STREAM_BUFFER_SIZE, - getter_AddRefs(bufStr)); + rv = NS_NewBufferedOutputStream(getter_AddRefs(bufStr), + fileOut, NS_OUTPUT_STREAM_BUFFER_SIZE); if (NS_FAILED(rv)) return rv; #endif @@ -235,7 +233,8 @@ public: return rv; } - nsLocalFileSystem(nsIFile* file) : mFile(file) { + nsLocalFileSystem(nsIFile* file, PRInt32 ioFlags, PRInt32 perm) + : mFile(file), mIOFlags(ioFlags), mPerm(perm) { NS_INIT_REFCNT(); //#ifdef PR_LOGGING (void)mFile->GetPath(&mSpec); @@ -248,8 +247,9 @@ public: //#endif } - static nsresult Create(nsIFile* file, nsIFileSystem* *result) { - nsLocalFileSystem* fs = new nsLocalFileSystem(file); + static nsresult Create(nsIFile* file, PRInt32 ioFlags, PRInt32 perm, + nsIFileSystem* *result) { + nsLocalFileSystem* fs = new nsLocalFileSystem(file, ioFlags, perm); if (fs == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(fs); @@ -259,6 +259,8 @@ public: protected: nsCOMPtr<nsIFile> mFile; + PRInt32 mIOFlags; + PRInt32 mPerm; //#ifdef PR_LOGGING char* mSpec; //#endif @@ -341,6 +343,10 @@ NS_IMPL_THREADSAFE_ISUPPORTS1(nsInputStreamFileSystem, nsIFileSystem); nsFileTransport::nsFileTransport() : mContentType(nsnull), + mBufferSegmentSize(NS_FILE_TRANSPORT_DEFAULT_SEGMENT_SIZE), + mBufferMaxSize(NS_FILE_TRANSPORT_DEFAULT_BUFFER_SIZE), + mIOFlags(-1), + mPerm(-1), mState(CLOSED), mCommand(NONE), mSuspended(PR_FALSE), @@ -348,7 +354,7 @@ nsFileTransport::nsFileTransport() mStatus(NS_OK), mOffset(0), mTotalAmount(-1), - mTransferAmount(0), + mTransferAmount(-1), mBuffer(nsnull) { NS_INIT_REFCNT(); @@ -367,50 +373,50 @@ nsFileTransport::nsFileTransport() } nsresult -nsFileTransport::Init(nsIFile* file, PRInt32 mode, const char* command, - PRUint32 bufferSegmentSize, PRUint32 bufferMaxSize) +nsFileTransport::Init(nsIFile* file, PRInt32 ioFlags, PRInt32 perm) { nsresult rv; mFile = file; + mIOFlags = ioFlags; + mPerm = perm; #if 0 nsCOMPtr<nsIFileChannel> channel; - rv = NS_NewFileChannel(file, - mode, - nsnull, // contentType -- infer - 0, // contentLength -- infer - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - bufferSegmentSize, - bufferMaxSize, - getter_AddRefs(channel)); + rv = NS_NewLocalFileChannel(file, + ioFlags, + perm, + nsnull, // contentType -- infer + 0, // contentLength -- infer + nsnull, // loadGroup + nsnull, // notificationCallbacks + nsIChannel::LOAD_NORMAL, + nsnull, // originalURI + bufferSegmentSize, + bufferMaxSize, + getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIFileSystem> fsObj = do_QueryInterface(channel, &rv); #else nsCOMPtr<nsIFileSystem> fsObj; - rv = nsLocalFileSystem::Create(file, getter_AddRefs(fsObj)); + rv = nsLocalFileSystem::Create(file, ioFlags, perm, getter_AddRefs(fsObj)); #endif if (NS_FAILED(rv)) return rv; - return Init(fsObj, command, bufferSegmentSize, bufferMaxSize); + return Init(fsObj); } nsresult nsFileTransport::Init(nsIInputStream* fromStream, const char* contentType, - PRInt32 contentLength, const char* command, - PRUint32 bufferSegmentSize, PRUint32 bufferMaxSize) + PRInt32 contentLength) { nsresult rv; nsCOMPtr<nsIFileSystem> fsObj; rv = nsInputStreamFileSystem::Create(fromStream, contentType, contentLength, getter_AddRefs(fsObj)); if (NS_FAILED(rv)) return rv; - return Init(fsObj, command, bufferSegmentSize, bufferMaxSize); + return Init(fsObj); } nsresult -nsFileTransport::Init(nsIFileSystem* fsObj, const char* command, - PRUint32 bufferSegmentSize, PRUint32 bufferMaxSize) +nsFileTransport::Init(nsIFileSystem* fsObj) { nsresult rv = NS_OK; if (mMonitor == nsnull) { @@ -419,10 +425,6 @@ nsFileTransport::Init(nsIFileSystem* fsObj, const char* command, 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; #ifdef PR_LOGGING if (mFile) (void)mFile->GetPath(&mSpec); @@ -482,7 +484,14 @@ nsFileTransport::IsPending(PRBool *result) } NS_IMETHODIMP -nsFileTransport::Cancel() +nsFileTransport::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::Cancel(nsresult status) { nsAutoMonitor mon(mMonitor); @@ -492,7 +501,7 @@ nsFileTransport::Cancel() } if (NS_SUCCEEDED(rv)) { // if there's no other error pending, say that we aborted - mStatus = NS_BINDING_ABORTED; + mStatus = status; } if (mState == READING) mState = END_READ; @@ -547,8 +556,7 @@ nsFileTransport::Resume() //////////////////////////////////////////////////////////////////////////////// NS_IMETHODIMP -nsFileTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **result) +nsFileTransport::OpenInputStream(nsIInputStream **result) { nsAutoMonitor mon(mMonitor); @@ -562,7 +570,7 @@ nsFileTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, if (NS_FAILED(rv)) return rv; if (!exists) - return NS_ERROR_FAILURE; // XXX probably need NS_BASE_STREAM_FILE_NOT_FOUND or something + return NS_ERROR_FILE_NOT_FOUND; rv = NS_NewPipe(getter_AddRefs(mBufferInputStream), getter_AddRefs(mBufferOutputStream), @@ -575,15 +583,13 @@ nsFileTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, mState = OPENING; mCommand = INITIATE_READ; - mOffset = startPosition; - mTransferAmount = readCount; mListener = null_nsCOMPtr(); *result = mBufferInputStream.get(); NS_ADDREF(*result); PR_LOG(gFileTransportLog, PR_LOG_DEBUG, - ("nsFileTransport: OpenInputStream [this=%x %s] startPosition=%d readCount=%d", - this, (const char*)mSpec, startPosition, readCount)); + ("nsFileTransport: OpenInputStream [this=%x %s] mOffset=%d mTransferAmount=%d", + this, (const char*)mSpec, mOffset, mTransferAmount)); NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; @@ -594,7 +600,7 @@ nsFileTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, } NS_IMETHODIMP -nsFileTransport::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **result) +nsFileTransport::OpenOutputStream(nsIOutputStream **result) { nsAutoMonitor mon(mMonitor); @@ -604,25 +610,22 @@ nsFileTransport::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **resu return NS_ERROR_IN_PROGRESS; nsCOMPtr<nsIOutputStream> fileOut; - rv = NS_NewFileOutputStream(mFile, - PR_CREATE_FILE | PR_WRONLY, - 0664, - getter_AddRefs(fileOut)); + rv = NS_NewLocalFileOutputStream(getter_AddRefs(fileOut), + mFile, mIOFlags, mPerm); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIOutputStream> bufStr; #ifdef NO_BUFFERING bufStr = fileOut; #else - rv = NS_NewBufferedOutputStream(fileOut, NS_OUTPUT_STREAM_BUFFER_SIZE, - getter_AddRefs(bufStr)); + rv = NS_NewBufferedOutputStream(getter_AddRefs(bufStr), + fileOut, NS_OUTPUT_STREAM_BUFFER_SIZE); if (NS_FAILED(rv)) return rv; #endif *result = bufStr; NS_ADDREF(*result); - mOffset = startPosition; if (mOffset > 0) { // if we need to set a starting offset, QI for nsISeekableStream nsCOMPtr<nsISeekableStream> ras = @@ -654,7 +657,8 @@ nsFileTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) return NS_ERROR_IN_PROGRESS; NS_ASSERTION(observer, "need to supply an nsIStreamObserver"); - rv = NS_NewAsyncStreamObserver(observer, NS_CURRENT_EVENTQ, getter_AddRefs(mOpenObserver)); + rv = NS_NewAsyncStreamObserver(getter_AddRefs(mOpenObserver), + observer, NS_CURRENT_EVENTQ); if (NS_FAILED(rv)) return rv; NS_ASSERTION(mOpenContext == nsnull, "context not released"); @@ -676,9 +680,7 @@ nsFileTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsFileTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *listener) +nsFileTransport::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { nsAutoMonitor mon(mMonitor); @@ -689,7 +691,8 @@ nsFileTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, return NS_ERROR_IN_PROGRESS; NS_ASSERTION(listener, "need to supply an nsIStreamListener"); - rv = NS_NewAsyncStreamListener(listener, nsnull, getter_AddRefs(mListener)); + rv = NS_NewAsyncStreamListener(getter_AddRefs(mListener), + listener, nsnull); if (NS_FAILED(rv)) return rv; rv = NS_NewPipe(getter_AddRefs(mBufferInputStream), @@ -709,12 +712,10 @@ nsFileTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, if (mState == CLOSED) mState = OPENING; mCommand = INITIATE_READ; - mOffset = startPosition; - mTransferAmount = readCount; PR_LOG(gFileTransportLog, PR_LOG_DEBUG, - ("nsFileTransport: AsyncRead [this=%x %s] startPosition=%d readCount=%d", - this, (const char*)mSpec, startPosition, readCount)); + ("nsFileTransport: AsyncRead [this=%x %s] mOffset=%d mTransferAmount=%d", + this, (const char*)mSpec, mOffset, mTransferAmount)); NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; @@ -726,9 +727,8 @@ nsFileTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsFileTransport::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { nsAutoMonitor mon(mMonitor); @@ -739,7 +739,8 @@ nsFileTransport::AsyncWrite(nsIInputStream *fromStream, return NS_ERROR_IN_PROGRESS; if (observer) { - rv = NS_NewAsyncStreamObserver(observer, NS_CURRENT_EVENTQ, getter_AddRefs(mObserver)); + rv = NS_NewAsyncStreamObserver(getter_AddRefs(mObserver), + observer, NS_CURRENT_EVENTQ); if (NS_FAILED(rv)) return rv; } @@ -749,8 +750,6 @@ nsFileTransport::AsyncWrite(nsIInputStream *fromStream, if (mState == CLOSED) mState = OPENING; mCommand = INITIATE_WRITE; - mOffset = startPosition; - mTransferAmount = writeCount; mSource = fromStream; PR_LOG(gFileTransportLog, PR_LOG_DEBUG, @@ -1170,27 +1169,44 @@ nsFileTransport::OnClose(nsIPipe* pipe) //////////////////////////////////////////////////////////////////////////////// NS_IMETHODIMP -nsFileTransport::GetOriginalURI(nsIURI * *aURI) +nsFileTransport::GetOriginalURI(nsIURI* *aURI) { + NS_NOTREACHED("GetOriginalURI"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsFileTransport::GetURI(nsIURI * *aURI) +nsFileTransport::SetOriginalURI(nsIURI* aURI) { + NS_NOTREACHED("SetOriginalURI"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFileTransport::GetURI(nsIURI* *aURI) +{ +// NS_NOTREACHED("GetURI"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFileTransport::SetURI(nsIURI* aURI) +{ + NS_NOTREACHED("SetURI"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFileTransport::GetLoadAttributes(nsLoadFlags *aLoadAttributes) { - return NS_ERROR_NOT_IMPLEMENTED; + *aLoadAttributes = LOAD_NORMAL; + return NS_OK; } NS_IMETHODIMP nsFileTransport::SetLoadAttributes(nsLoadFlags aLoadAttributes) { - return NS_ERROR_NOT_IMPLEMENTED; + return NS_OK; // ignored for now } NS_IMETHODIMP @@ -1221,27 +1237,115 @@ nsFileTransport::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsFileTransport::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFileTransport::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::SetTransferOffset(PRUint32 aTransferOffset) +{ + mOffset = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mTransferAmount; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::SetTransferCount(PRInt32 aTransferCount) +{ + mTransferAmount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFileTransport::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsFileTransport::GetOwner(nsISupports * *aOwner) { + NS_NOTREACHED("GetOwner"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFileTransport::SetOwner(nsISupports * aOwner) { + NS_NOTREACHED("SetOwner"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFileTransport::GetLoadGroup(nsILoadGroup * *aLoadGroup) { + NS_NOTREACHED("GetLoadGroup"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFileTransport::SetLoadGroup(nsILoadGroup* aLoadGroup) { + NS_NOTREACHED("SetLoadGroup"); return NS_ERROR_NOT_IMPLEMENTED; } diff --git a/mozilla/netwerk/base/src/nsFileTransport.h b/mozilla/netwerk/base/src/nsFileTransport.h index 2962d70714f..e05d641b6b4 100644 --- a/mozilla/netwerk/base/src/nsFileTransport.h +++ b/mozilla/netwerk/base/src/nsFileTransport.h @@ -62,20 +62,12 @@ public: Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); nsresult Init(nsIFile* file, - PRInt32 mode, - const char* command, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + PRInt32 ioFlags, + PRInt32 perm); nsresult Init(nsIInputStream* fromStream, const char* contentType, - PRInt32 contentLength, - const char* command, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); - nsresult Init(nsIFileSystem* fsObj, - const char* command, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + PRInt32 contentLength); + nsresult Init(nsIFileSystem* fsObj); void Process(void); void DoClose(void); @@ -107,6 +99,8 @@ protected: char* mContentType; PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + PRInt32 mIOFlags; + PRInt32 mPerm; nsCOMPtr<nsIStreamObserver> mOpenObserver; nsCOMPtr<nsISupports> mOpenContext; diff --git a/mozilla/netwerk/base/src/nsFileTransportService.cpp b/mozilla/netwerk/base/src/nsFileTransportService.cpp index ce9c2c6e029..ce6f41fe090 100644 --- a/mozilla/netwerk/base/src/nsFileTransportService.cpp +++ b/mozilla/netwerk/base/src/nsFileTransportService.cpp @@ -83,10 +83,8 @@ nsFileTransportService::Create(nsISupports *aOuter, REFNSIID aIID, void **aResul NS_IMETHODIMP nsFileTransportService::CreateTransport(nsIFile* file, - PRInt32 mode, - const char* command, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, + PRInt32 ioFlags, + PRInt32 perm, nsIChannel** result) { nsresult rv; @@ -94,7 +92,7 @@ nsFileTransportService::CreateTransport(nsIFile* file, if (trans == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(trans); - rv = trans->Init(file, mode, command, bufferSegmentSize, bufferMaxSize); + rv = trans->Init(file, ioFlags, perm); if (NS_FAILED(rv)) { NS_RELEASE(trans); return rv; @@ -107,9 +105,6 @@ NS_IMETHODIMP nsFileTransportService::CreateTransportFromStream(nsIInputStream *fromStream, const char* contentType, PRInt32 contentLength, - const char *command, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, nsIChannel** result) { nsresult rv; @@ -117,8 +112,7 @@ nsFileTransportService::CreateTransportFromStream(nsIInputStream *fromStream, if (trans == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(trans); - rv = trans->Init(fromStream, contentType, contentLength, command, - bufferSegmentSize, bufferMaxSize); + rv = trans->Init(fromStream, contentType, contentLength); if (NS_FAILED(rv)) { NS_RELEASE(trans); return rv; @@ -129,9 +123,6 @@ nsFileTransportService::CreateTransportFromStream(nsIInputStream *fromStream, NS_IMETHODIMP nsFileTransportService::CreateTransportFromFileSystem(nsIFileSystem *fsObj, - const char *command, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, nsIChannel **result) { nsresult rv; @@ -139,7 +130,7 @@ nsFileTransportService::CreateTransportFromFileSystem(nsIFileSystem *fsObj, if (trans == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(trans); - rv = trans->Init(fsObj, command, bufferSegmentSize, bufferMaxSize); + rv = trans->Init(fsObj); 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 4a3545ba2c4..d2e53be0098 100644 --- a/mozilla/netwerk/base/src/nsIOService.cpp +++ b/mozilla/netwerk/base/src/nsIOService.cpp @@ -217,14 +217,7 @@ nsIOService::NewURI(const char* aSpec, nsIURI* aBaseURI, } NS_IMETHODIMP -nsIOService::NewChannelFromURI(const char* verb, nsIURI *aURI, - nsILoadGroup *aGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) +nsIOService::NewChannelFromURI(nsIURI *aURI, nsIChannel **result) { nsresult rv; @@ -236,22 +229,12 @@ nsIOService::NewChannelFromURI(const char* verb, nsIURI *aURI, rv = GetProtocolHandler((const char*)scheme, getter_AddRefs(handler)); if (NS_FAILED(rv)) return rv; - rv = handler->NewChannel(verb, aURI, aGroup, notificationCallbacks, - loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, result); + rv = handler->NewChannel(aURI, result); return rv; } NS_IMETHODIMP -nsIOService::NewChannel(const char* verb, const char *aSpec, - nsIURI *aBaseURI, - nsILoadGroup *aGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) +nsIOService::NewChannel(const char *aSpec, nsIURI *aBaseURI, nsIChannel **result) { nsresult rv; nsCOMPtr<nsIURI> uri; @@ -259,9 +242,7 @@ nsIOService::NewChannel(const char* verb, const char *aSpec, rv = NewURI(aSpec, aBaseURI, getter_AddRefs(uri), getter_AddRefs(handler)); if (NS_FAILED(rv)) return rv; - rv = handler->NewChannel(verb, uri, aGroup, notificationCallbacks, - loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, result); + rv = handler->NewChannel(uri, result); return rv; } diff --git a/mozilla/netwerk/base/src/nsInputStreamChannel.cpp b/mozilla/netwerk/base/src/nsInputStreamChannel.cpp index 0f28f57dc21..ccaef0940fc 100644 --- a/mozilla/netwerk/base/src/nsInputStreamChannel.cpp +++ b/mozilla/netwerk/base/src/nsInputStreamChannel.cpp @@ -36,7 +36,8 @@ static NS_DEFINE_CID(kFileTransportServiceCID, NS_FILETRANSPORTSERVICE_CID); // nsInputStreamChannel methods: nsInputStreamChannel::nsInputStreamChannel() - : mContentType(nsnull), mContentLength(-1), mLoadAttributes(LOAD_NORMAL) + : mContentType(nsnull), mContentLength(-1), mLoadAttributes(LOAD_NORMAL), + mBufferSegmentSize(0), mBufferMaxSize(0), mStatus(NS_OK) { NS_INIT_REFCNT(); } @@ -61,31 +62,12 @@ nsInputStreamChannel::Create(nsISupports *aOuter, REFNSIID aIID, NS_IMETHODIMP nsInputStreamChannel::Init(nsIURI* uri, - const char* contentType, - PRInt32 contentLength, nsIInputStream* in, - nsILoadGroup *aGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) + const char* contentType, + PRInt32 contentLength) { - nsresult rv; - mOriginalURI = originalURI ? originalURI : uri; mURI = uri; mContentLength = contentLength; - mBufferSegmentSize = bufferSegmentSize; - mBufferMaxSize = bufferMaxSize; - - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; if (contentType) { mContentType = nsCRT::strdup(contentType); @@ -122,10 +104,18 @@ nsInputStreamChannel::IsPending(PRBool *result) } NS_IMETHODIMP -nsInputStreamChannel::Cancel(void) +nsInputStreamChannel::GetStatus(nsresult *status) { + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::Cancel(nsresult status) +{ + mStatus = status; if (mFileTransport) - return mFileTransport->Cancel(); + return mFileTransport->Cancel(status); return NS_OK; } @@ -149,21 +139,35 @@ nsInputStreamChannel::Resume(void) // nsIChannel methods: NS_IMETHODIMP -nsInputStreamChannel::GetOriginalURI(nsIURI * *aURI) +nsInputStreamChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mURI; NS_IF_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsInputStreamChannel::GetURI(nsIURI * *aURI) +nsInputStreamChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetURI(nsIURI* *aURI) { *aURI = mURI; NS_IF_ADDREF(*aURI); return NS_OK; } +NS_IMETHODIMP +nsInputStreamChannel::SetURI(nsIURI* aURI) +{ + mURI = aURI; + return NS_OK; +} + NS_IMETHODIMP nsInputStreamChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) { @@ -175,37 +179,41 @@ nsInputStreamChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) if (NS_FAILED(rv)) return rv; rv = fts->CreateTransportFromStream(mInputStream, mContentType, mContentLength, - "load", mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) return rv; + if (mBufferSegmentSize > 0) { + rv = mFileTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + } + if (mBufferMaxSize > 0) { + rv = mFileTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; + } return mFileTransport->AsyncOpen(observer, ctxt); } NS_IMETHODIMP -nsInputStreamChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **result) +nsInputStreamChannel::OpenInputStream(nsIInputStream **result) { - // if we had seekable streams, we could seek here: - NS_ASSERTION(startPosition == 0, "Can't seek in nsInputStreamChannel"); *result = mInputStream; NS_ADDREF(*result); return NS_OK; } NS_IMETHODIMP -nsInputStreamChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsInputStreamChannel::OpenOutputStream(nsIOutputStream **_retval) { // we don't do output return NS_ERROR_FAILURE; } NS_IMETHODIMP -nsInputStreamChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, nsIStreamListener *listener) +nsInputStreamChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { nsresult rv; + NS_ASSERTION(listener, "no listener"); mRealListener = listener; if (mLoadGroup) { @@ -232,18 +240,24 @@ nsInputStreamChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, if (NS_FAILED(rv)) return rv; rv = fts->CreateTransportFromStream(mInputStream, mContentType, mContentLength, - "load", mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) return rv; + if (mBufferSegmentSize > 0) { + rv = mFileTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + } + if (mBufferMaxSize > 0) { + rv = mFileTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; + } } - return mFileTransport->AsyncRead(startPosition, readCount, ctxt, this); + return mFileTransport->AsyncRead(this, ctxt); } NS_IMETHODIMP -nsInputStreamChannel::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, - PRInt32 writeCount, nsISupports *ctxt, - nsIStreamObserver *observer) +nsInputStreamChannel::AsyncWrite(nsIInputStream *fromStream, + nsIStreamObserver *observer, nsISupports *ctxt) { // we don't do output return NS_ERROR_FAILURE; @@ -293,6 +307,90 @@ nsInputStreamChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsInputStreamChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsInputStreamChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsInputStreamChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsInputStreamChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsInputStreamChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { diff --git a/mozilla/netwerk/base/src/nsInputStreamChannel.h b/mozilla/netwerk/base/src/nsInputStreamChannel.h index 70cc085bba5..31c5b474e4a 100644 --- a/mozilla/netwerk/base/src/nsInputStreamChannel.h +++ b/mozilla/netwerk/base/src/nsInputStreamChannel.h @@ -63,6 +63,7 @@ protected: PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; PRUint32 mLoadAttributes; + nsresult mStatus; }; #endif // nsInputStreamChannel_h__ diff --git a/mozilla/netwerk/base/src/nsLoadGroup.cpp b/mozilla/netwerk/base/src/nsLoadGroup.cpp index 8aea6e6dfcd..d41629ae817 100644 --- a/mozilla/netwerk/base/src/nsLoadGroup.cpp +++ b/mozilla/netwerk/base/src/nsLoadGroup.cpp @@ -75,7 +75,7 @@ nsLoadGroup::~nsLoadGroup() { nsresult rv; - rv = Cancel(); + rv = Cancel(NS_BINDING_ABORTED); NS_ASSERTION(NS_SUCCEEDED(rv), "Cancel failed"); NS_IF_RELEASE(mChannels); @@ -161,9 +161,15 @@ nsLoadGroup::IsPending(PRBool *aResult) return NS_OK; } +NS_IMETHODIMP +nsLoadGroup::GetStatus(nsresult *status) +{ + *status = NS_OK; + return NS_OK; +} NS_IMETHODIMP -nsLoadGroup::Cancel() +nsLoadGroup::Cancel(nsresult status) { nsresult rv, firstError; PRUint32 count; @@ -212,10 +218,10 @@ nsLoadGroup::Cancel() // // XXX: What should the context and error message be? // - (void)RemoveChannel(channel, nsnull, NS_BINDING_ABORTED, nsnull); + (void)RemoveChannel(channel, nsnull, status, nsnull); // Cancel the channel... - rv = channel->Cancel(); + rv = channel->Cancel(status); // Remember the first failure and return it... if (NS_FAILED(rv) && NS_SUCCEEDED(firstError)) { diff --git a/mozilla/netwerk/base/src/nsSocketTransport.cpp b/mozilla/netwerk/base/src/nsSocketTransport.cpp index 472d2857728..90330e38051 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport.cpp +++ b/mozilla/netwerk/base/src/nsSocketTransport.cpp @@ -117,7 +117,7 @@ PRLogModuleInfo* gSocketLog = nsnull; #endif /* PR_LOGGING */ nsSocketTransport::nsSocketTransport(): - mCancelOperation(PR_FALSE), + mCancelStatus(NS_OK), mCloseConnectionOnceDone(PR_FALSE), mCurrentState(eSocketState_Created), mHostName(nsnull), @@ -141,7 +141,9 @@ nsSocketTransport::nsSocketTransport(): mWriteBufferLength(0), mBytesExpected(-1), mReuseCount(0), - mLastReuseCount(0) + mLastReuseCount(0), + mBufferSegmentSize(0), + mBufferMaxSize(0) { NS_INIT_REFCNT(); @@ -204,7 +206,7 @@ nsSocketTransport::~nsSocketTransport() // Cancel any pending DNS request... // if (mDNSRequest) { - mDNSRequest->Cancel(); + mDNSRequest->Cancel(NS_BINDING_ABORTED); } mDNSRequest = null_nsCOMPtr(); @@ -384,13 +386,13 @@ nsresult nsSocketTransport::Process(PRInt16 aSelectFlags) // NS_BINDING_ABORTED which is a failure code... This will cause the // transport to move into the error state and end the request... // - if (mCancelOperation) { + if (NS_FAILED(mCancelStatus)) { PR_LOG(gSocketLog, PR_LOG_DEBUG, ("Transport [%s:%d %x] has been cancelled.\n", mHostName, mPort, this)); - mCancelOperation = PR_FALSE; - mStatus = NS_BINDING_ABORTED; + mStatus = mCancelStatus; + mCancelStatus = NS_OK; } // @@ -438,7 +440,7 @@ nsresult nsSocketTransport::Process(PRInt16 aSelectFlags) // Cancel any DNS requests... if (mDNSRequest) { - mDNSRequest->Cancel(); + mDNSRequest->Cancel(NS_BINDING_ABORTED); mDNSRequest = null_nsCOMPtr(); } @@ -1323,7 +1325,7 @@ nsSocketTransport::GetBytesExpected (PRInt32 * bytes) NS_IMETHODIMP nsSocketTransport::SetBytesExpected (PRInt32 bytes) { - nsAutoMonitor mon(mMonitor); + nsAutoMonitor mon(mMonitor); if (mCurrentState == eSocketState_WaitReadWrite) { @@ -1358,14 +1360,21 @@ nsSocketTransport::IsPending(PRBool *result) } NS_IMETHODIMP -nsSocketTransport::Cancel(void) +nsSocketTransport::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsSocketTransport::Cancel(nsresult status) { nsresult rv = NS_OK; // Enter the socket transport lock... nsAutoMonitor mon(mMonitor); - mCancelOperation = PR_TRUE; + mCancelStatus = status; // // Wake up the transport on the socket transport thread so it can // be removed from the select list... @@ -1637,7 +1646,7 @@ nsSocketTransport::OnStopLookup(nsISupports *aContext, // -------------------------------------------------------------------------- // NS_IMETHODIMP -nsSocketTransport::GetOriginalURI(nsIURI * *aURL) +nsSocketTransport::GetOriginalURI(nsIURI* *aURL) { nsStdURL *url; url = new nsStdURL(nsnull); @@ -1651,11 +1660,24 @@ nsSocketTransport::GetOriginalURI(nsIURI * *aURL) } NS_IMETHODIMP -nsSocketTransport::GetURI(nsIURI * *aURL) +nsSocketTransport::SetOriginalURI(nsIURI* aURL) +{ + NS_NOTREACHED("SetOriginalURI"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::GetURI(nsIURI* *aURL) { return GetOriginalURI(aURL); } +NS_IMETHODIMP +nsSocketTransport::SetURI(nsIURI* aURL) +{ + return SetOriginalURI(aURL); +} + NS_IMETHODIMP nsSocketTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) { @@ -1675,8 +1697,8 @@ nsSocketTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) // Create a marshalling open observer to receive notifications... if (NS_SUCCEEDED(rv)) { - rv = NS_NewAsyncStreamObserver(observer, NS_CURRENT_EVENTQ, - getter_AddRefs(mOpenObserver)); + rv = NS_NewAsyncStreamObserver(getter_AddRefs(mOpenObserver), + observer, NS_CURRENT_EVENTQ); } if (NS_SUCCEEDED(rv)) { @@ -1697,21 +1719,17 @@ nsSocketTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsSocketTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports* aContext, - nsIStreamListener* aListener) +nsSocketTransport::AsyncRead(nsIStreamListener* aListener, + nsISupports* aContext) { - // XXX deal with startPosition and readCount parameters - NS_ASSERTION(startPosition == 0, "can't deal with offsets in socket transport"); nsresult rv = NS_OK; // Enter the socket transport lock... nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, - ("+++ Entering nsSocketTransport::AsyncRead() [%s:%d %x]\t" - "readCount = %d.\n", - mHostName, mPort, this, readCount)); + ("+++ Entering nsSocketTransport::AsyncRead() [%s:%d %x]\n", + mHostName, mPort, this)); // If a read is already in progress then fail... if (GetReadType() != eSocketRead_None) { @@ -1735,8 +1753,8 @@ nsSocketTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // Create a marshalling stream listener to receive notifications... if (NS_SUCCEEDED(rv)) { - rv = NS_NewAsyncStreamListener(aListener, NS_CURRENT_EVENTQ, - getter_AddRefs(mReadListener)); + rv = NS_NewAsyncStreamListener(getter_AddRefs(mReadListener), + aListener, NS_CURRENT_EVENTQ); } if (NS_SUCCEEDED(rv)) { @@ -1759,20 +1777,17 @@ nsSocketTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsSocketTransport::AsyncWrite(nsIInputStream* aFromStream, - PRUint32 startPosition, PRInt32 writeCount, - nsISupports* aContext, - nsIStreamObserver* aObserver) + nsIStreamObserver* aObserver, + nsISupports* aContext) { - // XXX deal with startPosition and writeCount parameters nsresult rv = NS_OK; // Enter the socket transport lock... nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, - ("+++ Entering nsSocketTransport::AsyncWrite() [%s:%d %x]\t" - "writeCount = %d.\n", - mHostName, mPort, this, writeCount)); + ("+++ Entering nsSocketTransport::AsyncWrite() [%s:%d %x]\n", + mHostName, mPort, this)); // If a write is already in progress then fail... if (GetWriteType() != eSocketWrite_None) { @@ -1806,11 +1821,9 @@ nsSocketTransport::AsyncWrite(nsIInputStream* aFromStream, // Create a marshalling stream observer to receive notifications... if (aObserver) { - rv = NS_NewAsyncStreamObserver(aObserver, NS_CURRENT_EVENTQ, - getter_AddRefs(mWriteObserver)); + rv = NS_NewAsyncStreamObserver(getter_AddRefs(mWriteObserver), + aObserver, NS_CURRENT_EVENTQ); } - - mWriteCount = writeCount; } if (NS_SUCCEEDED(rv)) { @@ -1829,11 +1842,9 @@ nsSocketTransport::AsyncWrite(nsIInputStream* aFromStream, NS_IMETHODIMP -nsSocketTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream* *result) +nsSocketTransport::OpenInputStream(nsIInputStream* *result) { nsresult rv = NS_OK; - NS_ASSERTION(startPosition == 0, "fix me"); // Enter the socket transport lock... nsAutoMonitor mon(mMonitor); @@ -1881,10 +1892,9 @@ nsSocketTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP -nsSocketTransport::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *result) +nsSocketTransport::OpenOutputStream(nsIOutputStream* *result) { nsresult rv = NS_OK; - NS_ASSERTION(startPosition == 0, "fix me"); // Enter the socket transport lock... nsAutoMonitor mon(mMonitor); @@ -1979,6 +1989,90 @@ nsSocketTransport::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsSocketTransport::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mWriteCount; + return NS_OK; +} + +NS_IMETHODIMP +nsSocketTransport::SetTransferCount(PRInt32 aTransferCount) +{ + mWriteCount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsSocketTransport::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsSocketTransport::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_TRUE; + return NS_OK; +} + +NS_IMETHODIMP +nsSocketTransport::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsSocketTransport::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsSocketTransport::GetLoadGroup(nsILoadGroup * *aLoadGroup) { @@ -1989,7 +2083,8 @@ nsSocketTransport::GetLoadGroup(nsILoadGroup * *aLoadGroup) NS_IMETHODIMP nsSocketTransport::SetLoadGroup(nsILoadGroup* aLoadGroup) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("SetLoadGroup"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP diff --git a/mozilla/netwerk/base/src/nsSocketTransport.h b/mozilla/netwerk/base/src/nsSocketTransport.h index f6094201f9e..8fc5d4a1a10 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport.h +++ b/mozilla/netwerk/base/src/nsSocketTransport.h @@ -193,7 +193,7 @@ private: protected: - PRBool mCancelOperation; + nsresult mCancelStatus; PRBool mCloseConnectionOnceDone; nsSocketState mCurrentState; nsCOMPtr<nsIRequest> mDNSRequest; diff --git a/mozilla/netwerk/base/src/nsStreamLoader.cpp b/mozilla/netwerk/base/src/nsStreamLoader.cpp index 0e71b5ed313..54d525d24b0 100644 --- a/mozilla/netwerk/base/src/nsStreamLoader.cpp +++ b/mozilla/netwerk/base/src/nsStreamLoader.cpp @@ -25,10 +25,6 @@ #include "nsIURL.h" #include "nsNetUtil.h" #include "nsIChannel.h" -#include "nsIServiceManager.h" -#include "nsIIOService.h" - -static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); NS_IMETHODIMP nsStreamLoader::Init(nsIURI* aURL, @@ -44,17 +40,8 @@ nsStreamLoader::Init(nsIURI* aURL, mObserver = observer; mContext = context; - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - nsCOMPtr<nsIChannel> channel; - rv = serv->NewChannelFromURI("load", aURL, aGroup, notificationCallbacks, - loadAttributes, nsnull, - bufferSegmentSize, bufferMaxSize, getter_AddRefs(channel)); - if (NS_FAILED(rv)) return rv; - - rv = channel->AsyncRead(0, -1, nsnull, this); - + rv = NS_OpenURI(this, nsnull, aURL, nsnull, aGroup, notificationCallbacks, + loadAttributes, bufferSegmentSize, bufferMaxSize); if (NS_FAILED(rv) && mObserver) { nsresult rv2 = mObserver->OnStreamComplete(this, mContext, rv, mData.Length(), diff --git a/mozilla/netwerk/build/nsNetModule.cpp b/mozilla/netwerk/build/nsNetModule.cpp index e84fad828a8..87df43cce30 100644 --- a/mozilla/netwerk/build/nsNetModule.cpp +++ b/mozilla/netwerk/build/nsNetModule.cpp @@ -105,13 +105,13 @@ static nsModuleComponentInfo gNetModuleInfo[] = { NS_LOADGROUP_CID, "component://netscape/network/load-group", nsLoadGroup::Create }, - { NS_FILEINPUTSTREAM_CLASSNAME, - NS_FILEINPUTSTREAM_CID, - NS_FILEINPUTSTREAM_PROGID, + { NS_LOCALFILEINPUTSTREAM_CLASSNAME, + NS_LOCALFILEINPUTSTREAM_CID, + NS_LOCALFILEINPUTSTREAM_PROGID, nsFileInputStream::Create }, - { NS_FILEOUTPUTSTREAM_CLASSNAME, - NS_FILEOUTPUTSTREAM_CID, - NS_FILEOUTPUTSTREAM_PROGID, + { NS_LOCALFILEOUTPUTSTREAM_CLASSNAME, + NS_LOCALFILEOUTPUTSTREAM_CID, + NS_LOCALFILEOUTPUTSTREAM_PROGID, nsFileOutputStream::Create }, { "StdURLParser", NS_STANDARDURLPARSER_CID, diff --git a/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.cpp b/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.cpp index 16ced2a1ce4..267b2c9d6d2 100644 --- a/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.cpp +++ b/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.cpp @@ -45,12 +45,12 @@ class WriteStreamWrapper : public nsIOutputStream { public: WriteStreamWrapper(nsDiskCacheRecordChannel* aChannel, - nsIOutputStream *aBaseStream) ; + nsIOutputStream *aBaseStream); - virtual ~WriteStreamWrapper() ; + virtual ~WriteStreamWrapper(); static nsresult - Create(nsDiskCacheRecordChannel* aChannel, nsIOutputStream *aBaseStream, nsIOutputStream* *aWrapper) ; + Create(nsDiskCacheRecordChannel* aChannel, nsIOutputStream *aBaseStream, nsIOutputStream* *aWrapper); NS_DECL_ISUPPORTS NS_DECL_NSIBASESTREAM @@ -59,7 +59,7 @@ class WriteStreamWrapper : public nsIOutputStream private: nsDiskCacheRecordChannel* mChannel; nsCOMPtr<nsIOutputStream> mBaseStream; -} ; +}; // implement nsISupports NS_IMPL_ISUPPORTS(WriteStreamWrapper, NS_GET_IID(nsIOutputStream)) @@ -110,17 +110,18 @@ WriteStreamWrapper::Close() nsDiskCacheRecordChannel::nsDiskCacheRecordChannel(nsDiskCacheRecord *aRecord, nsILoadGroup *aLoadGroup) - : mRecord(aRecord) , - mLoadGroup(aLoadGroup) + : mRecord(aRecord), + mLoadGroup(aLoadGroup), + mStatus(NS_OK) { - NS_INIT_REFCNT() ; + NS_INIT_REFCNT(); NS_ADDREF(mRecord); - mRecord->mNumChannels++ ; + mRecord->mNumChannels++; } nsDiskCacheRecordChannel::~nsDiskCacheRecordChannel() { - mRecord->mNumChannels-- ; + mRecord->mNumChannels--; NS_RELEASE(mRecord); } @@ -161,13 +162,12 @@ nsDiskCacheRecordChannel::Init(void) #endif #endif return rv ; - } nsresult nsDiskCacheRecordChannel::NotifyStorageInUse(PRInt32 aBytesUsed) { - return mRecord->mDiskCache->mStorageInUse += aBytesUsed ; + return mRecord->mDiskCache->mStorageInUse += aBytesUsed; } // implement nsISupports @@ -181,38 +181,46 @@ NS_IMPL_ISUPPORTS4(nsDiskCacheRecordChannel, NS_IMETHODIMP nsDiskCacheRecordChannel::IsPending(PRBool *aIsPending) { - *aIsPending = PR_FALSE ; + *aIsPending = PR_FALSE; if(!mFileTransport) - return NS_OK ; + return NS_OK; - return mFileTransport->IsPending(aIsPending) ; + return mFileTransport->IsPending(aIsPending); } NS_IMETHODIMP -nsDiskCacheRecordChannel::Cancel(void) +nsDiskCacheRecordChannel::GetStatus(nsresult *status) { - if(!mFileTransport) - return NS_ERROR_FAILURE ; + *status = mStatus; + return NS_OK; +} - return mFileTransport->Cancel() ; +NS_IMETHODIMP +nsDiskCacheRecordChannel::Cancel(nsresult status) +{ + mStatus = status; + if(!mFileTransport) + return NS_ERROR_FAILURE; + + return mFileTransport->Cancel(status); } NS_IMETHODIMP nsDiskCacheRecordChannel::Suspend(void) { if(!mFileTransport) - return NS_ERROR_FAILURE ; + return NS_ERROR_FAILURE; - return mFileTransport->Suspend() ; + return mFileTransport->Suspend(); } NS_IMETHODIMP nsDiskCacheRecordChannel::Resume(void) { if(!mFileTransport) - return NS_ERROR_FAILURE ; + return NS_ERROR_FAILURE; - return mFileTransport->Resume() ; + return mFileTransport->Resume(); } // implement nsIChannel @@ -221,92 +229,107 @@ NS_IMETHODIMP nsDiskCacheRecordChannel::GetOriginalURI(nsIURI* *aURI) { // FUR - might need to implement this - not sure + NS_NOTREACHED("nsDiskCacheRecordChannel::GetOriginalURI"); return NS_ERROR_NOT_IMPLEMENTED ; } NS_IMETHODIMP -nsDiskCacheRecordChannel::GetURI(nsIURI * *aURI) +nsDiskCacheRecordChannel::SetOriginalURI(nsIURI* aURI) +{ + // FUR - might need to implement this - not sure + NS_NOTREACHED("nsDiskCacheRecordChannel::SetOriginalURI"); + return NS_ERROR_NOT_IMPLEMENTED ; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetURI(nsIURI* *aURI) { if(!mFileTransport) - return NS_ERROR_FAILURE ; + return NS_ERROR_FAILURE; - return mFileTransport->GetURI(aURI) ; + return mFileTransport->GetURI(aURI); } NS_IMETHODIMP -nsDiskCacheRecordChannel::OpenInputStream(PRUint32 aStartPosition, - PRInt32 aReadCount, - nsIInputStream* *aResult) +nsDiskCacheRecordChannel::SetURI(nsIURI* aURI) { - nsresult rv ; + if(!mFileTransport) + return NS_ERROR_FAILURE; + + return mFileTransport->SetURI(aURI); +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::OpenInputStream(nsIInputStream* *aResult) +{ + nsresult rv; if(mFileTransport) - return NS_ERROR_IN_PROGRESS ; + return NS_ERROR_IN_PROGRESS; - NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv) ; - if(NS_FAILED(rv)) return rv ; + NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); + if(NS_FAILED(rv)) return rv; // Made second parameter 0 since I really don't know what it is used for - rv = fts->CreateTransport(mSpec,0, "load", 0, 0, getter_AddRefs(mFileTransport)) ; + rv = fts->CreateTransport(mSpec, PR_RDONLY, 0, + getter_AddRefs(mFileTransport)); if(NS_FAILED(rv)) - return rv ; + return rv; // we don't need to worry about notification callbacks - rv = mFileTransport->OpenInputStream(aStartPosition, aReadCount, aResult) ; + rv = mFileTransport->OpenInputStream(aResult); if(NS_FAILED(rv)) - mFileTransport = nsnull ; + mFileTransport = nsnull; - return rv ; + return rv; } NS_IMETHODIMP -nsDiskCacheRecordChannel::OpenOutputStream(PRUint32 startPosition, - nsIOutputStream* *aResult) +nsDiskCacheRecordChannel::OpenOutputStream(nsIOutputStream* *aResult) { - nsresult rv ; - NS_ENSURE_ARG(aResult) ; + nsresult rv; + NS_ENSURE_ARG(aResult); if(mFileTransport) - return NS_ERROR_IN_PROGRESS ; + return NS_ERROR_IN_PROGRESS; - nsCOMPtr<nsIOutputStream> outputStream ; + nsCOMPtr<nsIOutputStream> outputStream; - NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv) ; - if(NS_FAILED(rv)) return rv ; + NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); + if(NS_FAILED(rv)) return rv; // Made second parameter 0 since I really don't know what it is used for - rv = fts->CreateTransport(mSpec,0, "load", 0, 0, getter_AddRefs(mFileTransport)) ; + rv = fts->CreateTransport(mSpec, PR_WRONLY, 0, + getter_AddRefs(mFileTransport)); if(NS_FAILED(rv)) - return rv ; + return rv; // we don't need to worry about notification callbacks - rv = mFileTransport->OpenOutputStream(startPosition, getter_AddRefs(outputStream)) ; + rv = mFileTransport->OpenOutputStream(getter_AddRefs(outputStream)); if(NS_FAILED(rv)) { - mFileTransport = nsnull ; - return rv ; + mFileTransport = nsnull; + return rv; } - return WriteStreamWrapper::Create(this, outputStream, aResult) ; - + return WriteStreamWrapper::Create(this, outputStream, aResult); } NS_IMETHODIMP nsDiskCacheRecordChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports *ctxt) { - return NS_ERROR_NOT_IMPLEMENTED ; + NS_NOTREACHED("nsDiskCacheRecordChannel::AsyncOpen"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsDiskCacheRecordChannel::AsyncRead(PRUint32 aStartPosition, - PRInt32 aReadCount, - nsISupports *aContext, - nsIStreamListener *aListener) +nsDiskCacheRecordChannel::AsyncRead(nsIStreamListener *aListener, + nsISupports *aContext) { - nsresult rv ; + nsresult rv; if(mFileTransport) - return NS_ERROR_IN_PROGRESS ; + return NS_ERROR_IN_PROGRESS; mRealListener = aListener; nsCOMPtr<nsIStreamListener> tempListener = this; @@ -334,15 +357,13 @@ nsDiskCacheRecordChannel::AsyncRead(PRUint32 aStartPosition, NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; // Made second parameter 0 since I really don't know what it is used for - rv = fts->CreateTransport(mSpec,0, "load", 0, 0, getter_AddRefs(mFileTransport)); + rv = fts->CreateTransport(mSpec, PR_RDONLY, 0, + getter_AddRefs(mFileTransport)); if (NS_FAILED(rv)) return rv; // no callbacks - rv = mFileTransport->AsyncRead(aStartPosition, - aReadCount, - aContext, - tempListener); + rv = mFileTransport->AsyncRead(tempListener, aContext); if (NS_FAILED(rv)) { // release the transport so that we don't think we're in progress @@ -353,25 +374,24 @@ nsDiskCacheRecordChannel::AsyncRead(PRUint32 aStartPosition, NS_IMETHODIMP nsDiskCacheRecordChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { /* if(!mFileTransport) - return NS_ERROR_FAILURE ; + return NS_ERROR_FAILURE; return mFileTransport->AsyncWrite(fromStream, startPosition, writeCount, ctxt, - observer) ; + observer); */ // I can't do this since the write is not monitored, and I won't be // able to updata the storage. + NS_NOTREACHED("nsDiskCacheRecordChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -379,7 +399,7 @@ NS_IMETHODIMP nsDiskCacheRecordChannel::GetLoadAttributes(nsLoadFlags *aLoadAttributes) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsDiskCacheRecordChannel method unexpectedly called"); + NS_NOTREACHED("nsDiskCacheRecordChannel::GetLoadAttributes"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -387,7 +407,7 @@ NS_IMETHODIMP nsDiskCacheRecordChannel::SetLoadAttributes(nsLoadFlags aLoadAttributes) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsDiskCacheRecordChannel method unexpectedly called"); + NS_NOTREACHED("nsDiskCacheRecordChannel::SetLoadAttributes"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -396,14 +416,13 @@ nsDiskCacheRecordChannel::SetLoadAttributes(nsLoadFlags aLoadAttributes) NS_IMETHODIMP nsDiskCacheRecordChannel::GetContentType(char * *aContentType) { - // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsDiskCacheRecordChannel method unexpectedly called"); + NS_NOTREACHED("nsDiskCacheRecordChannel::GetContentType"); return NS_ERROR_NOT_IMPLEMENTED; // This was the pre nsIFile stuff. Not sure if I have to implement this routines since // the memory cache doesn't #if 0 - nsresult rv ; + nsresult rv; PRBool isDirectory; if ( NS_SUCCEEDED(mSpec->IsDirectory(&isDirectory)) && isDirectory) { *aContentType = nsCRT::strdup("application/http-index-format"); @@ -413,8 +432,8 @@ nsDiskCacheRecordChannel::GetContentType(char * *aContentType) // I wish I can make this simplier - char* urlStr ; - mRecord->mFile->GetURLString(&urlStr) ; + char* urlStr; + mRecord->mFile->GetURLString(&urlStr); // file: URLs (currently) have no additional structure beyond that provided by standard // URLs, so there is no "outer" given to CreateInstance @@ -423,7 +442,7 @@ nsDiskCacheRecordChannel::GetContentType(char * *aContentType) rv = nsComponentManager::CreateInstance(kStandardURLCID, nsnull, NS_GET_IID(nsIURI), //(void**)&url); - getter_AddRefs(url)) ; + getter_AddRefs(url)); if (NS_FAILED(rv)) return rv; rv = url->SetSpec((char*)urlStr); @@ -446,12 +465,13 @@ nsDiskCacheRecordChannel::GetContentType(char * *aContentType) } else { return NS_OK; } - #endif +#endif } NS_IMETHODIMP nsDiskCacheRecordChannel::SetContentType(const char * aContentType) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsDiskCacheRecordChannel::SetContentType"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP @@ -461,7 +481,7 @@ nsDiskCacheRecordChannel::GetContentLength(PRInt32 *aContentLength) PRUint32 length; PRInt64 fileSize; - rv = mRecord->mFile->GetFileSize( &fileSize) ; + rv = mRecord->mFile->GetFileSize( &fileSize); LL_L2UI( length, fileSize ); @@ -473,19 +493,103 @@ nsDiskCacheRecordChannel::GetContentLength(PRInt32 *aContentLength) return rv; } +NS_IMETHODIMP +nsDiskCacheRecordChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsDiskCacheRecordChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDiskCacheRecordChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsDiskCacheRecordChannel::GetOwner(nsISupports* *aOwner) { - *aOwner = mOwner.get() ; - NS_IF_ADDREF(*aOwner) ; - return NS_OK ; + *aOwner = mOwner.get(); + NS_IF_ADDREF(*aOwner); + return NS_OK; } NS_IMETHODIMP nsDiskCacheRecordChannel::SetOwner(nsISupports* aOwner) { - mOwner = aOwner ; - return NS_OK ; + mOwner = aOwner; + return NS_OK; } NS_IMETHODIMP @@ -493,7 +597,7 @@ nsDiskCacheRecordChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { // Not required to be implemented, since it is implemented by cache manager NS_ASSERTION(0, "nsDiskCacheRecordChannel method unexpectedly called"); - return NS_OK ; + return NS_OK; } NS_IMETHODIMP @@ -508,7 +612,7 @@ NS_IMETHODIMP nsDiskCacheRecordChannel::GetNotificationCallbacks(nsIInterfaceRequestor* *aNotificationCallbacks) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsDiskCacheRecordChannel method unexpectedly called"); + NS_NOTREACHED("nsDiskCacheRecordChannel::GetNotificationCallbacks"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -516,8 +620,8 @@ NS_IMETHODIMP nsDiskCacheRecordChannel::SetNotificationCallbacks(nsIInterfaceRequestor* aNotificationCallbacks) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsDiskCacheRecordChannel method unexpectedly called"); - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsDiskCacheRecordChannel::SetNotificationCallbacks"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP @@ -574,7 +678,7 @@ nsDiskCacheRecordChannel::OnDataAvailable(nsIChannel* transportChannel, nsISuppo // for the consumer to empty the pipe... // if (NS_FAILED(rv)) { - mFileTransport->Cancel(); + mFileTransport->Cancel(rv); } return rv; } diff --git a/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.h b/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.h index 3617211f735..ade6329bf38 100644 --- a/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.h +++ b/mozilla/netwerk/cache/filecache/nsDiskCacheRecordChannel.h @@ -66,8 +66,9 @@ class nsDiskCacheRecordChannel : public nsIChannel, nsCOMPtr<nsILoadGroup> mLoadGroup ; nsCOMPtr<nsISupports> mOwner ; nsCOMPtr<nsIChannel> mFileTransport ; - nsCOMPtr< nsIFile > mSpec ; + nsCOMPtr< nsIFile > mSpec ; nsCOMPtr<nsIStreamListener> mRealListener; + nsresult mStatus; friend class WriteStreamWrapper ; } ; diff --git a/mozilla/netwerk/cache/memcache/nsMemCacheChannel.cpp b/mozilla/netwerk/cache/memcache/nsMemCacheChannel.cpp index 509928b2134..fd19717418f 100644 --- a/mozilla/netwerk/cache/memcache/nsMemCacheChannel.cpp +++ b/mozilla/netwerk/cache/memcache/nsMemCacheChannel.cpp @@ -52,7 +52,7 @@ class AsyncReadStreamAdaptor : public nsIInputStream, public: AsyncReadStreamAdaptor(nsMemCacheChannel* aChannel, nsIInputStream *aSyncStream): mSyncStream(aSyncStream), mDataAvailCursor(0), - mRemaining(0), mAvailable(0), mChannel(aChannel), mAborted(PR_FALSE), mSuspended(PR_FALSE) + mRemaining(-1), mAvailable(0), mChannel(aChannel), mAbortStatus(NS_OK), mSuspended(PR_FALSE) { NS_INIT_REFCNT(); NS_ADDREF(mChannel); @@ -67,15 +67,15 @@ public: nsresult IsPending(PRBool* aIsPending) { - *aIsPending = (mRemaining != 0) && !mAborted; + *aIsPending = (mRemaining != 0) && NS_SUCCEEDED(mAbortStatus); return NS_OK; } nsresult - Cancel(void) { - if (!mAborted) { - mAborted = PR_TRUE; - return mEventQueueStreamListener->OnStopRequest(mChannel, mContext, NS_BINDING_ABORTED, nsnull); + Cancel(nsresult status) { + if (NS_SUCCEEDED(mAbortStatus)) { + mAbortStatus = status; + return mEventQueueStreamListener->OnStopRequest(mChannel, mContext, status, nsnull); } else { // Cancel has already been called... Do not fire another OnStopRequest! return NS_OK; @@ -108,10 +108,10 @@ public: rv = mDownstreamListener->OnDataAvailable(mChannel, aContext, inStr, sourceOffset, count); if (NS_FAILED(rv)) { - Cancel(); + Cancel(rv); return rv; } - if (!mSuspended && !mAborted) { + if (!mSuspended && NS_SUCCEEDED(mAbortStatus)) { rv = NextListenerEvent(); if (NS_FAILED(rv)) { Fail(); @@ -132,7 +132,7 @@ public: } if (NS_FAILED(rv)) - Cancel(); + Cancel(rv); return rv; } @@ -160,8 +160,8 @@ public: NS_IMETHOD Read(char* aBuf, PRUint32 aCount, PRUint32 *aBytesRead) { - if (mAborted) - return NS_ERROR_ABORT; + if (NS_FAILED(mAbortStatus)) + return NS_BASE_STREAM_CLOSED; *aBytesRead = 0; aCount = PR_MIN(aCount, mAvailable); @@ -186,16 +186,26 @@ public: return rv; } + NS_IMETHOD + GetTransferCount(nsLoadFlags *aTransferCount) { + *aTransferCount = mRemaining; + return NS_OK; + } + + NS_IMETHOD + SetTransferCount(nsLoadFlags aTransferCount) { + mRemaining = aTransferCount; + return NS_OK; + } + nsresult - AsyncRead(PRUint32 aStartPosition, PRInt32 aReadCount, - nsISupports* aContext, nsIStreamListener* aListener) { + AsyncRead(nsIStreamListener* aListener, nsISupports* aContext) { nsresult rv; nsIEventQueue *eventQ; mContext = aContext; mDownstreamListener = aListener; - mRemaining = aReadCount; NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); if (NS_FAILED(rv)) return rv; @@ -206,8 +216,8 @@ public: rv = eventQService->GetThreadEventQueue(PR_CurrentThread(), &eventQ); if (NS_FAILED(rv)) return rv; - rv = NS_NewAsyncStreamListener(NS_STATIC_CAST(nsIStreamListener*, this), eventQ, - getter_AddRefs(mEventQueueStreamListener)); + rv = NS_NewAsyncStreamListener(getter_AddRefs(mEventQueueStreamListener), + NS_STATIC_CAST(nsIStreamListener*, this), eventQ); NS_RELEASE(eventQ); if (NS_FAILED(rv)) return rv; @@ -221,7 +231,7 @@ protected: nsresult Fail(void) { - mAborted = PR_TRUE; + mAbortStatus = NS_BINDING_ABORTED; return mEventQueueStreamListener->OnStopRequest(mChannel, mContext, NS_BINDING_FAILED, nsnull); } @@ -264,7 +274,7 @@ private: PRUint32 mAvailable; // Number of bytes for which OnDataAvailable fired nsMemCacheChannel* mChannel; // Associated memory cache channel, strong link // but can not use nsCOMPtr - PRBool mAborted; // Abort() has been called + nsresult mAbortStatus; // Abort() has been called PRBool mSuspended; // Suspend() has been called }; @@ -318,7 +328,7 @@ private: NS_IMPL_THREADSAFE_ISUPPORTS1(MemCacheWriteStreamWrapper, nsIOutputStream) nsMemCacheChannel::nsMemCacheChannel(nsMemCacheRecord *aRecord, nsILoadGroup *aLoadGroup) - : mRecord(aRecord) + : mRecord(aRecord), mStartOffset(0), mStatus(NS_OK) { NS_INIT_REFCNT(); mRecord->mNumChannels++; @@ -339,11 +349,19 @@ nsMemCacheChannel::IsPending(PRBool* aIsPending) } NS_IMETHODIMP -nsMemCacheChannel::Cancel(void) +nsMemCacheChannel::GetStatus(nsresult *status) { + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsMemCacheChannel::Cancel(nsresult status) +{ + mStatus = status; if (!mAsyncReadStream) return NS_ERROR_FAILURE; - return mAsyncReadStream->Cancel(); + return mAsyncReadStream->Cancel(status); } NS_IMETHODIMP @@ -363,37 +381,54 @@ nsMemCacheChannel::Resume(void) } NS_IMETHODIMP -nsMemCacheChannel::GetOriginalURI(nsIURI * *aURI) +nsMemCacheChannel::GetOriginalURI(nsIURI* *aURI) { // Not required + NS_NOTREACHED("nsMemCacheChannel::GetOriginalURI"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsMemCacheChannel::GetURI(nsIURI * *aURI) +nsMemCacheChannel::SetOriginalURI(nsIURI* aURI) +{ + // Not required + NS_NOTREACHED("nsMemCacheChannel::SetOriginalURI"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetURI(nsIURI* *aURI) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::GetURI"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsMemCacheChannel::OpenInputStream(PRUint32 aStartPosition, PRInt32 aReadCount, - nsIInputStream* *aResult) +nsMemCacheChannel::SetURI(nsIURI* aURI) +{ + // Not required to be implemented, since it is implemented by cache manager + NS_NOTREACHED("nsMemCacheChannel::SetURI"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::OpenInputStream(nsIInputStream* *aResult) { nsresult rv; NS_ENSURE_ARG(aResult); if (mInputStream) return NS_ERROR_NOT_AVAILABLE; - rv = mRecord->mStorageStream->NewInputStream(aStartPosition, getter_AddRefs(mInputStream)); + rv = mRecord->mStorageStream->NewInputStream(mStartOffset, getter_AddRefs(mInputStream)); + if (NS_FAILED(rv)) return rv; *aResult = mInputStream; NS_ADDREF(*aResult); return rv; } NS_IMETHODIMP -nsMemCacheChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *aResult) +nsMemCacheChannel::OpenOutputStream(nsIOutputStream* *aResult) { nsresult rv; NS_ENSURE_ARG(aResult); @@ -402,10 +437,10 @@ nsMemCacheChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *aR PRUint32 oldLength; mRecord->mStorageStream->GetLength(&oldLength); - rv = mRecord->mStorageStream->GetOutputStream(startPosition, getter_AddRefs(outputStream)); + rv = mRecord->mStorageStream->GetOutputStream(mStartOffset, getter_AddRefs(outputStream)); if (NS_FAILED(rv)) return rv; - if (startPosition < oldLength) - NotifyStorageInUse(startPosition - oldLength); + if (mStartOffset < oldLength) + NotifyStorageInUse(mStartOffset - oldLength); return MemCacheWriteStreamWrapper::Create(this, outputStream, aResult); } @@ -414,15 +449,15 @@ NS_IMETHODIMP nsMemCacheChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports *ctxt) { // Not required + NS_NOTREACHED("nsMemCacheChannel::AsyncOpen"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsMemCacheChannel::AsyncRead(PRUint32 aStartPosition, PRInt32 aReadCount, - nsISupports *aContext, nsIStreamListener *aListener) +nsMemCacheChannel::AsyncRead(nsIStreamListener *aListener, nsISupports *aContext) { nsCOMPtr<nsIInputStream> inputStream; - nsresult rv = OpenInputStream(aStartPosition, aReadCount, getter_AddRefs(inputStream)); + nsresult rv = OpenInputStream(getter_AddRefs(inputStream)); if (NS_FAILED(rv)) return rv; AsyncReadStreamAdaptor *asyncReadStreamAdaptor; @@ -432,19 +467,102 @@ nsMemCacheChannel::AsyncRead(PRUint32 aStartPosition, PRInt32 aReadCount, NS_ADDREF(asyncReadStreamAdaptor); mAsyncReadStream = asyncReadStreamAdaptor; - rv = asyncReadStreamAdaptor->AsyncRead(aStartPosition, aReadCount, aContext, aListener); + rv = asyncReadStreamAdaptor->AsyncRead(aListener, aContext); if (NS_FAILED(rv)) delete asyncReadStreamAdaptor; return rv; } NS_IMETHODIMP -nsMemCacheChannel::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, - PRInt32 writeCount, nsISupports *ctxt, - nsIStreamObserver *observer) +nsMemCacheChannel::AsyncWrite(nsIInputStream *fromStream, + nsIStreamObserver *observer, nsISupports *ctxt) { // Not required to be implemented - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::AsyncWrite"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mStartOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsMemCacheChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + mStartOffset = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsMemCacheChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsMemCacheChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsMemCacheChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsMemCacheChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsMemCacheChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsMemCacheChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsMemCacheChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsMemCacheChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsMemCacheChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsMemCacheChannel::SetContentLength"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -452,7 +570,7 @@ NS_IMETHODIMP nsMemCacheChannel::GetLoadAttributes(nsLoadFlags *aLoadAttributes) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::GetLoadAttributes"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -460,7 +578,7 @@ NS_IMETHODIMP nsMemCacheChannel::SetLoadAttributes(nsLoadFlags aLoadAttributes) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::SetLoadAttributes"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -468,7 +586,7 @@ NS_IMETHODIMP nsMemCacheChannel::GetContentType(char* *aContentType) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::GetContentType"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -476,7 +594,7 @@ NS_IMETHODIMP nsMemCacheChannel::SetContentType(const char *aContentType) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::SetContentType"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -484,7 +602,7 @@ NS_IMETHODIMP nsMemCacheChannel::GetContentLength(PRInt32 *aContentLength) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::GetContentLength"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -508,7 +626,7 @@ NS_IMETHODIMP nsMemCacheChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::GetLoadGroup"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -516,7 +634,7 @@ NS_IMETHODIMP nsMemCacheChannel::SetLoadGroup(nsILoadGroup* aLoadGroup) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::SetLoadGroup"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -524,7 +642,7 @@ NS_IMETHODIMP nsMemCacheChannel::GetNotificationCallbacks(nsIInterfaceRequestor* *aNotificationCallbacks) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::GetNotificationCallbacks"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -532,7 +650,7 @@ NS_IMETHODIMP nsMemCacheChannel::SetNotificationCallbacks(nsIInterfaceRequestor* aNotificationCallbacks) { // Not required to be implemented, since it is implemented by cache manager - NS_ASSERTION(0, "nsMemCacheChannel method unexpectedly called"); + NS_NOTREACHED("nsMemCacheChannel::SetNotificationCallbacks"); return NS_ERROR_NOT_IMPLEMENTED; } diff --git a/mozilla/netwerk/cache/memcache/nsMemCacheChannel.h b/mozilla/netwerk/cache/memcache/nsMemCacheChannel.h index 3328591168a..87586f595f5 100644 --- a/mozilla/netwerk/cache/memcache/nsMemCacheChannel.h +++ b/mozilla/netwerk/cache/memcache/nsMemCacheChannel.h @@ -53,6 +53,8 @@ protected: nsCOMPtr<nsIInputStream> mInputStream; nsCOMPtr<nsISupports> mOwner; AsyncReadStreamAdaptor* mAsyncReadStream; // non-owning pointer + PRUint32 mStartOffset; + nsresult mStatus; friend class MemCacheWriteStreamWrapper; friend class AsyncReadStreamAdaptor; diff --git a/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.cpp b/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.cpp index 664fc14d24d..fa85646ac17 100644 --- a/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.cpp +++ b/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.cpp @@ -101,19 +101,41 @@ protected: NS_IMPL_THREADSAFE_ISUPPORTS1(CacheOutputStream, nsIOutputStream) NS_IMETHODIMP -nsCacheEntryChannel::OpenOutputStream(PRUint32 aStartPosition, - nsIOutputStream* *aOutputStream) +nsCacheEntryChannel::GetTransferOffset(PRUint32 *aStartPosition) +{ + return mChannel->GetTransferOffset(aStartPosition); +} + +NS_IMETHODIMP +nsCacheEntryChannel::SetTransferOffset(PRUint32 aStartPosition) +{ + mCacheEntry->mLogicalLength = aStartPosition; + return mChannel->SetTransferOffset(aStartPosition); +} + +NS_IMETHODIMP +nsCacheEntryChannel::GetTransferCount(PRInt32 *aReadCount) +{ + return mChannel->GetTransferCount(aReadCount); +} + +NS_IMETHODIMP +nsCacheEntryChannel::SetTransferCount(PRInt32 aReadCount) +{ + return mChannel->SetTransferCount(aReadCount); +} + +NS_IMETHODIMP +nsCacheEntryChannel::OpenOutputStream(nsIOutputStream* *aOutputStream) { nsresult rv; nsCOMPtr<nsIOutputStream> baseOutputStream; - rv = mChannel->OpenOutputStream(aStartPosition, - getter_AddRefs(baseOutputStream)); + rv = mChannel->OpenOutputStream(getter_AddRefs(baseOutputStream)); if (NS_FAILED(rv)) return rv; mCacheEntry->NoteUpdate(); mCacheEntry->NoteAccess(); - mCacheEntry->mLogicalLength = aStartPosition; *aOutputStream = new CacheOutputStream(baseOutputStream, mCacheEntry); if (!*aOutputStream) @@ -123,19 +145,15 @@ nsCacheEntryChannel::OpenOutputStream(PRUint32 aStartPosition, } NS_IMETHODIMP -nsCacheEntryChannel::OpenInputStream(PRUint32 aStartPosition, - PRInt32 aReadCount, - nsIInputStream* *aInputStream) +nsCacheEntryChannel::OpenInputStream(nsIInputStream* *aInputStream) { mCacheEntry->NoteAccess(); - return mChannel->OpenInputStream(aStartPosition, aReadCount, aInputStream); + + return mChannel->OpenInputStream(aInputStream); } NS_IMETHODIMP -nsCacheEntryChannel::AsyncRead(PRUint32 aStartPosition, - PRInt32 aReadCount, - nsISupports *aContext, - nsIStreamListener *aListener) +nsCacheEntryChannel::AsyncRead(nsIStreamListener *aListener, nsISupports *aContext) { nsresult rv; @@ -147,7 +165,7 @@ nsCacheEntryChannel::AsyncRead(PRUint32 aStartPosition, mLoadGroup->GetDefaultLoadAttributes(&mLoadAttributes); } - rv = mChannel->AsyncRead(aStartPosition, aReadCount, aContext, aListener); + rv = mChannel->AsyncRead(aListener, aContext); return rv; } @@ -155,11 +173,10 @@ nsCacheEntryChannel::AsyncRead(PRUint32 aStartPosition, // No async writes allowed to the cache yet NS_IMETHODIMP nsCacheEntryChannel::AsyncWrite(nsIInputStream *aFromStream, - PRUint32 aStartPosition, - PRInt32 aWriteCount, - nsISupports *aContext, - nsIStreamObserver *aObserver) + nsIStreamObserver *aObserver, + nsISupports *aContext) { + NS_NOTREACHED("nsCacheEntryChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -198,7 +215,7 @@ nsCacheEntryChannel::GetURI(nsIURI * *aURI) NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = serv->NewURI(spec, 0, aURI); + rv = serv->NewURI(spec, nsnull, aURI); nsAllocator::Free(spec); return rv; } @@ -207,5 +224,6 @@ NS_IMETHODIMP nsCacheEntryChannel::GetOriginalURI(nsIURI * *aURI) { // FIXME - should return original URI passed into NewChannel() ? + NS_NOTREACHED("nsCacheEntryChannel::GetOriginalURI"); return NS_ERROR_NOT_IMPLEMENTED; } diff --git a/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.h b/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.h index 596357a6a1c..1469adcb2e7 100644 --- a/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.h +++ b/mozilla/netwerk/cache/mgr/nsCacheEntryChannel.h @@ -52,14 +52,15 @@ class nsCacheEntryChannel : public nsChannelProxy { public: NS_DECL_ISUPPORTS - NS_IMETHOD OpenOutputStream(PRUint32 aStartPosition, nsIOutputStream* *aOutputStream); - NS_IMETHOD OpenInputStream(PRUint32 aStartPosition, PRInt32 aReadCount, - nsIInputStream* *aInputStream); - NS_IMETHOD AsyncRead(PRUint32 aStartPosition, PRInt32 aReadCount, - nsISupports *aContext, nsIStreamListener *aListener); - NS_IMETHOD AsyncWrite(nsIInputStream *aFromStream, PRUint32 aStartPosition, - PRInt32 aWriteCount, nsISupports *aContext, - nsIStreamObserver *aObserver); + NS_IMETHOD GetTransferOffset(PRUint32 *aStartPosition); + NS_IMETHOD SetTransferOffset(PRUint32 aStartPosition); + NS_IMETHOD GetTransferCount(PRInt32 *aReadCount); + NS_IMETHOD SetTransferCount(PRInt32 aReadCount); + NS_IMETHOD OpenOutputStream(nsIOutputStream* *aOutputStream); + NS_IMETHOD OpenInputStream(nsIInputStream* *aInputStream); + NS_IMETHOD AsyncRead(nsIStreamListener *aListener, nsISupports *aContext); + NS_IMETHOD AsyncWrite(nsIInputStream *aFromStream, + nsIStreamObserver *aObserver, nsISupports *aContext); NS_IMETHOD GetLoadAttributes(nsLoadFlags *aLoadAttributes); NS_IMETHOD SetLoadAttributes(nsLoadFlags aLoadAttributes); NS_IMETHOD GetLoadGroup(nsILoadGroup* *aLoadGroup); diff --git a/mozilla/netwerk/cache/mgr/nsCachedNetData.cpp b/mozilla/netwerk/cache/mgr/nsCachedNetData.cpp index f7e4d3f8db9..8b1131e1c17 100644 --- a/mozilla/netwerk/cache/mgr/nsCachedNetData.cpp +++ b/mozilla/netwerk/cache/mgr/nsCachedNetData.cpp @@ -1091,7 +1091,10 @@ public: rv = mCacheEntry->NewChannel(0, getter_AddRefs(mChannel)); if (NS_FAILED(rv)) return rv; - return mChannel->OpenOutputStream(aStartingOffset, getter_AddRefs(mCacheStream)); + rv = mChannel->SetTransferOffset(aStartingOffset); + if (NS_FAILED(rv)) return rv; + + return mChannel->OpenOutputStream(getter_AddRefs(mCacheStream)); } NS_DECL_ISUPPORTS diff --git a/mozilla/netwerk/dns/src/nsDnsService.cpp b/mozilla/netwerk/dns/src/nsDnsService.cpp index dce677e89fe..607dab74963 100644 --- a/mozilla/netwerk/dns/src/nsDnsService.cpp +++ b/mozilla/netwerk/dns/src/nsDnsService.cpp @@ -97,10 +97,9 @@ public: NS_DECL_NSIREQUEST nsDNSRequest() - : mLookup(nsnull), - mSuspendCount(0) + : mLookup(nsnull), mSuspendCount(0), mStatus(NS_OK) #ifdef DNS_TIMING - ,mStartTime(PR_IntervalNow()) + , mStartTime(PR_IntervalNow()) #endif { NS_INIT_REFCNT(); } virtual ~nsDNSRequest() {} @@ -116,6 +115,7 @@ protected: nsCOMPtr<nsISupports> mUserContext; nsDNSLookup* mLookup; // weak ref PRUint32 mSuspendCount; + nsresult mStatus; #ifdef DNS_TIMING PRIntervalTime mStartTime; #endif @@ -259,6 +259,7 @@ nsDNSRequest::FireStop(nsresult status) if (mUserListener == nsnull) return NS_ERROR_FAILURE; + mStatus = status; if (NS_SUCCEEDED(status)) { rv = mUserListener->OnFound(mUserContext, mLookup->HostName(), @@ -295,8 +296,16 @@ nsDNSRequest::IsPending(PRBool *result) } NS_IMETHODIMP -nsDNSRequest::Cancel(void) +nsDNSRequest::GetStatus(nsresult *status) { + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsDNSRequest::Cancel(nsresult status) +{ + mStatus = status; if (mUserListener) { // Hold onto a reference to ourself because if we decide to remove // this request from the mRequests list, it could be the last @@ -305,7 +314,7 @@ nsDNSRequest::Cancel(void) nsCOMPtr<nsIRequest> req = this; (void)mLookup->Suspend(this); - return FireStop(NS_BINDING_ABORTED); + return FireStop(status); } return NS_OK; } @@ -827,8 +836,7 @@ nsDNSService::nsDNSService() #endif } - -nsresult +NS_IMETHODIMP nsDNSService::Init() { nsresult rv = NS_OK; @@ -1066,7 +1074,7 @@ nsDNSService::Lookup(const char* hostName, return NS_ERROR_OFFLINE; #endif - nsDNSLookup * lookup; + nsDNSLookup * lookup; rv = GetLookupEntry(hostName, &lookup); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/dns/src/nsDnsService.h b/mozilla/netwerk/dns/src/nsDnsService.h index 2be8cdbd25a..540c0ca0e2a 100644 --- a/mozilla/netwerk/dns/src/nsDnsService.h +++ b/mozilla/netwerk/dns/src/nsDnsService.h @@ -81,7 +81,7 @@ protected: friend pascal void nsDnsServiceNotifierRoutine(void * contextPtr, OTEventCode code, OTResult result, void * cookie); PRBool mThreadRunning; InetSvcRef mServiceRef; - QHdr mCompletionQueue; + QHdr mCompletionQueue; #if TARGET_CARBON OTClientContextPtr mClientContext; OTNotifyUPP nsDnsServiceNotifierRoutineUPP; diff --git a/mozilla/netwerk/protocol/Makefile.in b/mozilla/netwerk/protocol/Makefile.in index c611aa6b12b..fe6403bdb38 100644 --- a/mozilla/netwerk/protocol/Makefile.in +++ b/mozilla/netwerk/protocol/Makefile.in @@ -26,7 +26,7 @@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk -DIRS = about data file resource ftp http keyword jar res \ +DIRS = about data file ftp http keyword jar res \ datetime finger include $(topsrcdir)/config/rules.mk diff --git a/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl b/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl index 647b901ac09..6b071f6e651 100644 --- a/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl +++ b/mozilla/netwerk/protocol/about/public/nsIAboutModule.idl @@ -31,14 +31,17 @@ interface nsIEventQueue; [scriptable, uuid(692303c0-2f83-11d3-8cd0-0060b0fc14a3)] interface nsIAboutModule : nsISupports { - nsIChannel newChannel(in string verb, - in nsIURI aURI, - in nsILoadGroup aLoadGroup, - in nsIInterfaceRequestor notificationCallbacks, - in nsLoadFlags loadAttributes, - in nsIURI originalURI, - in unsigned long bufferSegmentSize, - in unsigned long bufferMaxSize); + /** + * Constructs a new channel for the about protocol module. + * + * @param originalURI - Specifies the original URI which caused the creation + * of this channel. This can occur when the construction of one channel + * (e.g. for resource:) causes another channel to be created on its behalf + * (e.g. a file: channel), or if a redirect occurs, causing the current + * URL to become different from the original URL. If NULL, the aURI parameter + * will be used as the originalURI instead. + */ + nsIChannel newChannel(in nsIURI aURI); }; %{C++ diff --git a/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp b/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp index bcb3bf5390d..60bbcab9486 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutBlank.cpp @@ -33,15 +33,7 @@ NS_IMPL_ISUPPORTS(nsAboutBlank, NS_GET_IID(nsIAboutModule)); static const char kBlankPage[] = ""; NS_IMETHODIMP -nsAboutBlank::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) +nsAboutBlank::NewChannel(nsIURI *aURI, nsIChannel **result) { nsresult rv; nsIChannel* channel; @@ -54,11 +46,8 @@ nsAboutBlank::NewChannel(const char *verb, NS_RELEASE(s); if (NS_FAILED(rv)) return rv; - rv = NS_NewInputStreamChannel(aURI, "text/html", - nsCRT::strlen(kBlankPage), - in, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, &channel); + rv = NS_NewInputStreamChannel(&channel, aURI, in, "text/html", + nsCRT::strlen(kBlankPage)); 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 d8ce0d55ba7..ec295d1d853 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutBloat.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutBloat.cpp @@ -42,15 +42,7 @@ static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); NS_IMPL_ISUPPORTS(nsAboutBloat, NS_GET_IID(nsIAboutModule)); NS_IMETHODIMP -nsAboutBloat::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) +nsAboutBloat::NewChannel(nsIURI *aURI, nsIChannel **result) { nsresult rv; nsXPIDLCString path; @@ -150,15 +142,12 @@ nsAboutBloat::NewChannel(const char *verb, rv = file->GetFileSize(&bigSize); if (NS_FAILED(rv)) return rv; - rv = NS_NewFileInputStream(file, getter_AddRefs(inStr)); + rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), file); if (NS_FAILED(rv)) return rv; } nsIChannel* channel; - rv = NS_NewInputStreamChannel(aURI, "text/plain", - size, inStr, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, - bufferSegmentSize, bufferMaxSize, &channel); + rv = NS_NewInputStreamChannel(&channel, aURI, inStr, "text/plain", size); if (NS_FAILED(rv)) return rv; *result = channel; diff --git a/mozilla/netwerk/protocol/about/src/nsAboutCredits.cpp b/mozilla/netwerk/protocol/about/src/nsAboutCredits.cpp index d81ffd87fb9..16dfcfc3903 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutCredits.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutCredits.cpp @@ -33,25 +33,14 @@ NS_IMPL_ISUPPORTS(nsAboutCredits, NS_GET_IID(nsIAboutModule)); static const char kCreditsPage[] = "http://www.mozilla.org/credits/"; NS_IMETHODIMP -nsAboutCredits::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) +nsAboutCredits::NewChannel(nsIURI *aURI, nsIChannel **result) { nsresult rv; NS_WITH_SERVICE(nsIIOService, ioService, kIOServiceCID, &rv); if (NS_FAILED(rv)) - return rv; - rv = ioService->NewChannel(verb, kCreditsPage, NULL, aLoadGroup, - notificationCallbacks, loadAttributes, - originalURI, bufferSegmentSize, bufferMaxSize, - result); - return rv; + return rv; + rv = ioService->NewChannel(kCreditsPage, nsnull, result); + return rv; } NS_METHOD diff --git a/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp b/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp index 6937fcf75d7..9181732ed3e 100644 --- a/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp @@ -121,14 +121,7 @@ nsAboutProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsAboutProtocolHandler::NewChannel(const char* verb, nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsAboutProtocolHandler::NewChannel(nsIURI* uri, nsIChannel* *result) { // about:what you ask? nsresult rv; @@ -152,9 +145,7 @@ nsAboutProtocolHandler::NewChannel(const char* verb, nsIURI* uri, nsCRT::free(progIDStr); if (NS_SUCCEEDED(rv)) { // The standard return case: - return aboutMod->NewChannel(verb, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, - bufferMaxSize, result); + return aboutMod->NewChannel(uri, result); } // mumble... diff --git a/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp b/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp index 86c458eee41..5701e1b8017 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp +++ b/mozilla/netwerk/protocol/data/src/nsDataChannel.cpp @@ -53,32 +53,13 @@ NS_IMPL_ISUPPORTS3(nsDataChannel, nsIRequest) nsresult -nsDataChannel::Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsDataChannel::Init(nsIURI* uri) { // we don't care about event sinks in data nsresult rv; - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - // 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; @@ -229,24 +210,35 @@ nsDataChannel::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult) NS_IMETHODIMP nsDataChannel::IsPending(PRBool *result) { + NS_NOTREACHED("nsDataChannel::IsPending"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsDataChannel::Cancel(void) +nsDataChannel::GetStatus(nsresult *status) { + *status = NS_OK; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::Cancel(nsresult status) +{ + NS_NOTREACHED("nsDataChannel::Cancel"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDataChannel::Suspend(void) { + NS_NOTREACHED("nsDataChannel::Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDataChannel::Resume(void) { + NS_NOTREACHED("nsDataChannel::Resume"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -254,26 +246,39 @@ nsDataChannel::Resume(void) // nsIChannel methods: NS_IMETHODIMP -nsDataChannel::GetOriginalURI(nsIURI * *aURI) +nsDataChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mUrl; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsDataChannel::GetURI(nsIURI * *aURI) +nsDataChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::GetURI(nsIURI* *aURI) { *aURI = mUrl; NS_IF_ADDREF(*aURI); return NS_OK; } +NS_IMETHODIMP +nsDataChannel::SetURI(nsIURI* aURI) +{ + mUrl = aURI; + return NS_OK; +} + // This class NS_IMETHODIMP -nsDataChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **_retval) +nsDataChannel::OpenInputStream(nsIInputStream **_retval) { // XXX we should honor the startPosition and count passed in. @@ -284,22 +289,22 @@ nsDataChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, } NS_IMETHODIMP -nsDataChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsDataChannel::OpenOutputStream(nsIOutputStream **_retval) { // you can't write to a data url + NS_NOTREACHED("nsDataChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDataChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) { + NS_NOTREACHED("nsDataChannel::AsyncOpen"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsDataChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *aListener) +nsDataChannel::AsyncRead(nsIStreamListener *aListener, nsISupports *ctxt) { nsresult rv; nsCOMPtr<nsIEventQueue> eventQ; @@ -313,7 +318,7 @@ nsDataChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // we'll just fire everything off at once because we've already got all // the data. - rv = NS_NewAsyncStreamListener(aListener, eventQ, getter_AddRefs(listener)); + rv = NS_NewAsyncStreamListener(getter_AddRefs(listener), aListener, eventQ); if (NS_FAILED(rv)) return rv; rv = listener->OnStartRequest(this, ctxt); @@ -333,12 +338,11 @@ nsDataChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsDataChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { // you can't write to a data url + NS_NOTREACHED("nsDataChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -386,6 +390,90 @@ nsDataChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsDataChannel::SetContentLength(PRInt32 aContentLength) +{ + mContentLength = aContentLength; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsDataChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDataChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsDataChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDataChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsDataChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDataChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsDataChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDataChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDataChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsDataChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { diff --git a/mozilla/netwerk/protocol/data/src/nsDataChannel.h b/mozilla/netwerk/protocol/data/src/nsDataChannel.h index 860d09965fa..5efe010e876 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataChannel.h +++ b/mozilla/netwerk/protocol/data/src/nsDataChannel.h @@ -50,14 +50,7 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(nsIURI* uri); nsresult ParseData(); protected: diff --git a/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp b/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp index 081c60848cc..46b7b6a93a4 100644 --- a/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp +++ b/mozilla/netwerk/protocol/data/src/nsDataHandler.cpp @@ -96,14 +96,7 @@ nsDataHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsDataHandler::NewChannel(const char* verb, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsDataHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; @@ -111,8 +104,7 @@ nsDataHandler::NewChannel(const char* verb, nsIURI* url, rv = nsDataChannel::Create(nsnull, NS_GET_IID(nsIDataChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.cpp b/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.cpp index bfd4a52db3e..d910e9779f3 100644 --- a/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.cpp +++ b/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.cpp @@ -44,20 +44,12 @@ nsDateTimeChannel::~nsDateTimeChannel() { NS_IMPL_ISUPPORTS4(nsDateTimeChannel, nsIChannel, nsIRequest, nsIStreamListener, nsIStreamObserver) nsresult -nsDateTimeChannel::Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsDateTimeChannel::Init(nsIURI* uri) { nsresult rv; NS_ASSERTION(uri, "no uri"); - mOriginalURI = originalURI ? originalURI : uri; mUrl = uri; rv = mUrl->GetPort(&mPort); @@ -69,13 +61,6 @@ nsDateTimeChannel::Init(const char* verb, if (!*(const char *)mHost) return NS_ERROR_NOT_INITIALIZED; - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - return NS_OK; } @@ -97,24 +82,35 @@ nsDateTimeChannel::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult NS_IMETHODIMP nsDateTimeChannel::IsPending(PRBool *result) { + NS_NOTREACHED("nsDateTimeChannel::IsPending"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsDateTimeChannel::Cancel(void) +nsDateTimeChannel::GetStatus(nsresult *status) { + *status = NS_OK; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::Cancel(nsresult status) +{ + NS_NOTREACHED("nsDateTimeChannel::Cancel"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDateTimeChannel::Suspend(void) { + NS_NOTREACHED("nsDateTimeChannel::Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsDateTimeChannel::Resume(void) { + NS_NOTREACHED("nsDateTimeChannel::Resume"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -122,15 +118,22 @@ nsDateTimeChannel::Resume(void) // nsIChannel methods: NS_IMETHODIMP -nsDateTimeChannel::GetOriginalURI(nsIURI * *aURI) +nsDateTimeChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mUrl; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsDateTimeChannel::GetURI(nsIURI * *aURI) +nsDateTimeChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetURI(nsIURI* *aURI) { *aURI = mUrl; NS_IF_ADDREF(*aURI); @@ -138,8 +141,14 @@ nsDateTimeChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsDateTimeChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **_retval) +nsDateTimeChannel::SetURI(nsIURI* aURI) +{ + mUrl = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::OpenInputStream(nsIInputStream **_retval) { nsresult rv = NS_OK; @@ -153,12 +162,13 @@ nsDateTimeChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = channel->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; - return channel->OpenInputStream(startPosition, readCount, _retval); + return channel->OpenInputStream(_retval); } NS_IMETHODIMP -nsDateTimeChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsDateTimeChannel::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("nsDateTimeChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -181,9 +191,8 @@ nsDateTimeChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsDateTimeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *aListener) +nsDateTimeChannel::AsyncRead(nsIStreamListener *aListener, + nsISupports *ctxt) { nsresult rv = NS_OK; @@ -199,16 +208,15 @@ nsDateTimeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, mListener = aListener; - return channel->AsyncRead(startPosition, readCount, ctxt, this); + return channel->AsyncRead(this, ctxt); } NS_IMETHODIMP nsDateTimeChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { + NS_NOTREACHED("nsDateTimeChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -252,6 +260,90 @@ nsDateTimeChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsDateTimeChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsDateTimeChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsDateTimeChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsDateTimeChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsDateTimeChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsDateTimeChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsDateTimeChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsDateTimeChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsDateTimeChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsDateTimeChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsDateTimeChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsDateTimeChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { diff --git a/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.h b/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.h index d8a7979231f..e10f74e2f53 100644 --- a/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.h +++ b/mozilla/netwerk/protocol/datetime/src/nsDateTimeChannel.h @@ -55,14 +55,7 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(nsIURI* uri); protected: nsCOMPtr<nsIInterfaceRequestor> mCallbacks; diff --git a/mozilla/netwerk/protocol/datetime/src/nsDateTimeHandler.cpp b/mozilla/netwerk/protocol/datetime/src/nsDateTimeHandler.cpp index b8e87303515..25d4deb2fd6 100644 --- a/mozilla/netwerk/protocol/datetime/src/nsDateTimeHandler.cpp +++ b/mozilla/netwerk/protocol/datetime/src/nsDateTimeHandler.cpp @@ -95,14 +95,7 @@ nsDateTimeHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsDateTimeHandler::NewChannel(const char* verb, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsDateTimeHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; @@ -110,8 +103,7 @@ nsDateTimeHandler::NewChannel(const char* verb, nsIURI* url, rv = nsDateTimeChannel::Create(nsnull, NS_GET_IID(nsIChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp b/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp index b2246ddd461..30ad089efe2 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp +++ b/mozilla/netwerk/protocol/file/src/nsFileChannel.cpp @@ -39,39 +39,28 @@ static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); //////////////////////////////////////////////////////////////////////////////// nsFileChannel::nsFileChannel() - : mLoadAttributes(LOAD_NORMAL) + : mIOFlags(-1), + mPerm(-1), + mLoadAttributes(LOAD_NORMAL), + mBufferSegmentSize(0), + mBufferMaxSize(0), + mTransferOffset(0), + mTransferCount(-1), + mStatus(NS_OK) { NS_INIT_REFCNT(); } nsresult -nsFileChannel::Init(const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsFileChannel::Init(PRInt32 ioFlags, + PRInt32 perm, + nsIURI* uri) { nsresult rv; - mOriginalURI = originalURI ? originalURI : uri; + mIOFlags = ioFlags; + mPerm = perm; mURI = uri; - mCommand = nsCRT::strdup(command); - mBufferSegmentSize = bufferSegmentSize; - mBufferMaxSize = bufferMaxSize; - if (mCommand == nsnull) - return NS_ERROR_OUT_OF_MEMORY; - - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; // if we support the nsIURL interface then use it to get just // the file path with no other garbage! @@ -89,7 +78,6 @@ nsFileChannel::Init(const char* command, nsFileChannel::~nsFileChannel() { - if (mCommand) nsCRT::free(mCommand); } NS_IMPL_THREADSAFE_ISUPPORTS5(nsFileChannel, @@ -102,6 +90,9 @@ NS_IMPL_THREADSAFE_ISUPPORTS5(nsFileChannel, NS_METHOD nsFileChannel::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult) { + if (aOuter) + return NS_ERROR_NO_AGGREGATION; + nsFileChannel* fc = new nsFileChannel(); if (fc == nsnull) return NS_ERROR_OUT_OF_MEMORY; @@ -125,10 +116,18 @@ nsFileChannel::IsPending(PRBool *result) } NS_IMETHODIMP -nsFileChannel::Cancel() +nsFileChannel::GetStatus(nsresult *status) { + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::Cancel(nsresult status) +{ + mStatus = status; if (mFileTransport) - return mFileTransport->Cancel(); + return mFileTransport->Cancel(status); return NS_OK; } @@ -153,15 +152,22 @@ nsFileChannel::Resume() //////////////////////////////////////////////////////////////////////////////// NS_IMETHODIMP -nsFileChannel::GetOriginalURI(nsIURI * *aURI) +nsFileChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mURI; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsFileChannel::GetURI(nsIURI * *aURI) +nsFileChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetURI(nsIURI* *aURI) { *aURI = mURI; NS_ADDREF(*aURI); @@ -169,24 +175,63 @@ nsFileChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsFileChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **result) +nsFileChannel::SetURI(nsIURI* aURI) +{ + mURI = aURI; + return NS_OK; +} + +nsresult +nsFileChannel::EnsureTransport() +{ + nsresult rv; + + NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); + if (NS_FAILED(rv)) return rv; + + rv = fts->CreateTransport(mFile, mIOFlags, mPerm, + getter_AddRefs(mFileTransport)); + if (NS_FAILED(rv)) return rv; + + if (mLoadAttributes != LOAD_NORMAL) { + rv = mFileTransport->SetLoadAttributes(mLoadAttributes); + if (NS_FAILED(rv)) return rv; + } + if (mBufferSegmentSize) { + rv = mFileTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + } + if (mBufferMaxSize) { + rv = mFileTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; + } + if (mCallbacks) { + rv = mFileTransport->SetNotificationCallbacks(mCallbacks); + if (NS_FAILED(rv)) return rv; + } + if (mTransferOffset) { + rv = mFileTransport->SetTransferOffset(mTransferOffset); + if (NS_FAILED(rv)) return rv; + } + if (mTransferCount >= 0) { + rv = mFileTransport->SetTransferCount(mTransferCount); + if (NS_FAILED(rv)) return rv; + } + return rv; +} + +NS_IMETHODIMP +nsFileChannel::OpenInputStream(nsIInputStream **result) { nsresult rv; if (mFileTransport) return NS_ERROR_IN_PROGRESS; - NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = fts->CreateTransport(mFile, PR_RDONLY, mCommand, 0, 0, getter_AddRefs(mFileTransport)); + rv = EnsureTransport(); if (NS_FAILED(rv)) goto done; - rv = mFileTransport->SetNotificationCallbacks(mCallbacks); - if (NS_FAILED(rv)) goto done; - - rv = mFileTransport->OpenInputStream(startPosition, readCount, result); + rv = mFileTransport->OpenInputStream(result); done: if (NS_FAILED(rv)) { // release the transport so that we don't think we're in progress @@ -196,24 +241,19 @@ nsFileChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, } NS_IMETHODIMP -nsFileChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **result) +nsFileChannel::OpenOutputStream(nsIOutputStream **result) { nsresult rv; if (mFileTransport) return NS_ERROR_IN_PROGRESS; - NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); - if (NS_FAILED(rv)) return rv; + mIOFlags |= PR_WRONLY; - rv = fts->CreateTransport(mFile, PR_RDONLY, mCommand, mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mFileTransport)); + rv = EnsureTransport(); if (NS_FAILED(rv)) goto done; - rv = mFileTransport->SetNotificationCallbacks(mCallbacks); - if (NS_FAILED(rv)) goto done; - - rv = mFileTransport->OpenOutputStream(startPosition, result); + rv = mFileTransport->OpenOutputStream(result); done: if (NS_FAILED(rv)) { // release the transport so that we don't think we're in progress @@ -225,13 +265,13 @@ nsFileChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **result NS_IMETHODIMP nsFileChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) { + NS_NOTREACHED("nsFileChannel::AsyncOpen"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsFileChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *listener) +nsFileChannel::AsyncRead(nsIStreamListener *listener, + nsISupports *ctxt) { nsresult rv; @@ -260,17 +300,10 @@ nsFileChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, if (NS_FAILED(rv)) return rv; } - NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = fts->CreateTransport(mFile, PR_RDONLY, mCommand, mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mFileTransport)); + rv = EnsureTransport(); if (NS_FAILED(rv)) goto done; - rv = mFileTransport->SetNotificationCallbacks(mCallbacks); - if (NS_FAILED(rv)) goto done; - - rv = mFileTransport->AsyncRead(startPosition, readCount, ctxt, tempListener); + rv = mFileTransport->AsyncRead(tempListener, ctxt); done: if (NS_FAILED(rv)) { // release the transport so that we don't think we're in progress @@ -281,26 +314,20 @@ nsFileChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsFileChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { nsresult rv; if (mFileTransport) return NS_ERROR_IN_PROGRESS; - NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); - if (NS_FAILED(rv)) return rv; + mIOFlags |= PR_WRONLY; - rv = fts->CreateTransport(mFile, PR_RDONLY, mCommand, mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mFileTransport)); + rv = EnsureTransport(); if (NS_FAILED(rv)) goto done; - rv = mFileTransport->SetNotificationCallbacks(mCallbacks); - if (NS_FAILED(rv)) goto done; - - rv = mFileTransport->AsyncWrite(fromStream, startPosition, writeCount, ctxt, observer); + rv = mFileTransport->AsyncWrite(fromStream, observer, ctxt); done: if (NS_FAILED(rv)) { // release the transport so that we don't think we're in progress @@ -380,6 +407,90 @@ nsFileChannel::GetContentLength(PRInt32 *aContentLength) return rv; } +NS_IMETHODIMP +nsFileChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsFileChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFileChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + mTransferOffset = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetTransferCount(PRInt32 aTransferCount) +{ + mTransferCount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsFileChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -392,7 +503,6 @@ NS_IMETHODIMP nsFileChannel::SetLoadGroup(nsILoadGroup* aLoadGroup) { mLoadGroup = aLoadGroup; - return NS_OK; } @@ -432,6 +542,7 @@ nsFileChannel::GetSecurityInfo(nsISupports * *aSecurityInfo) *aSecurityInfo = nsnull; return NS_OK; } + //////////////////////////////////////////////////////////////////////////////// // nsIStreamListener methods: //////////////////////////////////////////////////////////////////////////////// @@ -479,7 +590,7 @@ nsFileChannel::OnDataAvailable(nsIChannel* transportChannel, nsISupports* contex // for the consumer to empty the pipe... // if (NS_FAILED(rv)) { - mFileTransport->Cancel(); + mFileTransport->Cancel(rv); } return rv; } @@ -490,15 +601,8 @@ nsFileChannel::OnDataAvailable(nsIChannel* transportChannel, nsISupports* contex NS_IMETHODIMP nsFileChannel::Init(nsIFile* file, - PRInt32 mode, - const char* contentType, - PRInt32 contentLength, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) + PRInt32 ioFlags, + PRInt32 perm) { nsresult rv; nsCOMPtr<nsIFileURL> url; @@ -510,14 +614,7 @@ nsFileChannel::Init(nsIFile* file, rv = url->SetFile(file); if (NS_FAILED(rv)) return rv; - return Init("load", // XXX - url, - aLoadGroup, - notificationCallbacks, - loadAttributes, - originalURI, - bufferSegmentSize, - bufferMaxSize); + return Init(ioFlags, perm, url); } NS_IMETHODIMP @@ -528,11 +625,32 @@ nsFileChannel::GetFile(nsIFile* *result) return NS_OK; } +NS_IMETHODIMP +nsFileChannel::GetIoFlags(PRInt32 *aIoFlags) +{ + *aIoFlags = mIOFlags; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetIoFlags(PRInt32 aIoFlags) +{ + mIOFlags = aIoFlags; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::GetPermissions(PRInt32 *aPermissions) +{ + *aPermissions = mPerm; + return NS_OK; +} + +NS_IMETHODIMP +nsFileChannel::SetPermissions(PRInt32 aPermissions) +{ + mPerm = aPermissions; + return NS_OK; +} + //////////////////////////////////////////////////////////////////////////////// - - - - - - - diff --git a/mozilla/netwerk/protocol/file/src/nsFileChannel.h b/mozilla/netwerk/protocol/file/src/nsFileChannel.h index f96add2124b..5d77a60ac4e 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileChannel.h +++ b/mozilla/netwerk/protocol/file/src/nsFileChannel.h @@ -61,29 +61,27 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(PRInt32 ioFlags, PRInt32 perm, nsIURI* uri); + nsresult EnsureTransport(); protected: nsCOMPtr<nsIFile> mFile; nsCOMPtr<nsIURI> mOriginalURI; nsCOMPtr<nsIURI> mURI; nsCOMPtr<nsIInterfaceRequestor> mCallbacks; - char* mCommand; + PRInt32 mIOFlags; + PRInt32 mPerm; nsCOMPtr<nsIChannel> mFileTransport; nsCString mContentType; PRUint32 mLoadAttributes; nsCOMPtr<nsILoadGroup> mLoadGroup; nsCOMPtr<nsISupports> mOwner; nsCOMPtr<nsIStreamListener> mRealListener; + PRUint32 mTransferOffset; + PRInt32 mTransferCount; PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + nsresult mStatus; }; #endif // nsFileChannel_h__ diff --git a/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp b/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp index d8277e5cc04..99c036952dd 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/file/src/nsFileProtocolHandler.cpp @@ -133,14 +133,7 @@ nsFileProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsFileProtocolHandler::NewChannel(const char* command, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsFileProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; @@ -148,8 +141,9 @@ nsFileProtocolHandler::NewChannel(const char* command, nsIURI* url, rv = nsFileChannel::Create(nsnull, NS_GET_IID(nsIFileChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(command, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(-1, // ioFlags unspecified + -1, // permissions unspecified + url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/file/src/nsFileProtocolModule.cpp b/mozilla/netwerk/protocol/file/src/nsFileProtocolModule.cpp index b4b1a8cc076..4f08851adca 100644 --- a/mozilla/netwerk/protocol/file/src/nsFileProtocolModule.cpp +++ b/mozilla/netwerk/protocol/file/src/nsFileProtocolModule.cpp @@ -32,9 +32,9 @@ static nsModuleComponentInfo components[] = NS_NETWORK_PROTOCOL_PROGID_PREFIX "file", nsFileProtocolHandler::Create }, - { NS_FILECHANNEL_CLASSNAME, - NS_FILECHANNEL_CID, - NS_FILECHANNEL_PROGID, + { NS_LOCALFILECHANNEL_CLASSNAME, + NS_LOCALFILECHANNEL_CID, + NS_LOCALFILECHANNEL_PROGID, nsFileChannel::Create } }; diff --git a/mozilla/netwerk/protocol/finger/src/nsFingerChannel.cpp b/mozilla/netwerk/protocol/finger/src/nsFingerChannel.cpp index 62923c9913a..f793d2d7210 100644 --- a/mozilla/netwerk/protocol/finger/src/nsFingerChannel.cpp +++ b/mozilla/netwerk/protocol/finger/src/nsFingerChannel.cpp @@ -37,10 +37,11 @@ static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID); #define BUFFER_MAX_SIZE (64*1024) // nsFingerChannel methods -nsFingerChannel::nsFingerChannel(): - mContentLength(-1), - mActAsObserver(PR_TRUE), - mPort(-1) +nsFingerChannel::nsFingerChannel() + : mContentLength(-1), + mActAsObserver(PR_TRUE), + mPort(-1), + mStatus(NS_OK) { NS_INIT_REFCNT(); } @@ -52,21 +53,13 @@ NS_IMPL_THREADSAFE_ISUPPORTS4(nsFingerChannel, nsIChannel, nsIRequest, nsIStreamListener, nsIStreamObserver) nsresult -nsFingerChannel::Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsFingerChannel::Init(nsIURI* uri) { nsresult rv; nsXPIDLCString autoBuffer; NS_ASSERTION(uri, "no uri"); - mOriginalURI = originalURI ? originalURI : uri; mUrl = uri; // For security reasons, we do not allow the user to specify a @@ -101,16 +94,10 @@ nsFingerChannel::Init(const char* verb, #ifdef DEBUG_bryner printf("Status:mUser = %s, mHost = %s\n", (const char*)mUser, - (const char*)mHost); + (const char*)mHost); #endif if (!*(const char *)mHost) return NS_ERROR_NOT_INITIALIZED; - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; return NS_OK; } @@ -132,16 +119,25 @@ nsFingerChannel::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult) NS_IMETHODIMP nsFingerChannel::IsPending(PRBool *result) { + NS_NOTREACHED("nsFingerChannel::IsPending"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsFingerChannel::Cancel(void) +nsFingerChannel::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::Cancel(nsresult status) { nsresult rv = NS_ERROR_FAILURE; + mStatus = status; if (mTransport) { - rv = mTransport->Cancel(); + rv = mTransport->Cancel(status); } return rv; } @@ -149,12 +145,14 @@ nsFingerChannel::Cancel(void) NS_IMETHODIMP nsFingerChannel::Suspend(void) { + NS_NOTREACHED("nsFingerChannel::Suspend"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFingerChannel::Resume(void) { + NS_NOTREACHED("nsFingerChannel::Resume"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -162,15 +160,22 @@ nsFingerChannel::Resume(void) // nsIChannel methods: NS_IMETHODIMP -nsFingerChannel::GetOriginalURI(nsIURI * *aURI) +nsFingerChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mUrl; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsFingerChannel::GetURI(nsIURI * *aURI) +nsFingerChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::GetURI(nsIURI* *aURI) { *aURI = mUrl; NS_IF_ADDREF(*aURI); @@ -178,8 +183,14 @@ nsFingerChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsFingerChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **_retval) +nsFingerChannel::SetURI(nsIURI* aURI) +{ + mUrl = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::OpenInputStream(nsIInputStream **_retval) { nsresult rv = NS_OK; @@ -194,12 +205,13 @@ nsFingerChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, rv = channel->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; - return channel->OpenInputStream(startPosition, readCount, _retval); + return channel->OpenInputStream(_retval); } NS_IMETHODIMP -nsFingerChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsFingerChannel::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("nsFingerChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -210,9 +222,7 @@ nsFingerChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsFingerChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *aListener) +nsFingerChannel::AsyncRead(nsIStreamListener *aListener, nsISupports *ctxt) { nsresult rv = NS_OK; @@ -236,11 +246,10 @@ nsFingerChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsFingerChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { + NS_NOTREACHED("nsFingerChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -284,6 +293,90 @@ nsFingerChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsFingerChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsFingerChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsFingerChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsFingerChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsFingerChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsFingerChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsFingerChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsFingerChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsFingerChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsFingerChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsFingerChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFingerChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsFingerChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -373,7 +466,7 @@ nsFingerChannel::OnStopRequest(nsIChannel* aChannel, nsISupports* aContext, // we're no longer acting as an observer. mActAsObserver = PR_FALSE; - return aChannel->AsyncRead(0, -1, mResponseContext, this); + return aChannel->AsyncRead(this, mResponseContext); } } @@ -415,8 +508,9 @@ nsFingerChannel::SendRequest(nsIChannel* aChannel) { printf("Sending: %s\n", requestBuffer.GetBuffer()); #endif - rv = aChannel->AsyncWrite(charstream, 0, requestBuffer.Length(), 0, - this); + rv = aChannel->SetTransferCount(requestBuffer.Length()); + if (NS_FAILED(rv)) return rv; + rv = aChannel->AsyncWrite(charstream, this, 0); return rv; } diff --git a/mozilla/netwerk/protocol/finger/src/nsFingerChannel.h b/mozilla/netwerk/protocol/finger/src/nsFingerChannel.h index dd1dfd29205..10b18fdd4ef 100644 --- a/mozilla/netwerk/protocol/finger/src/nsFingerChannel.h +++ b/mozilla/netwerk/protocol/finger/src/nsFingerChannel.h @@ -51,14 +51,7 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(nsIURI* uri); protected: nsCOMPtr<nsIInterfaceRequestor> mCallbacks; @@ -82,6 +75,7 @@ protected: nsCOMPtr<nsISupports> mResponseContext; nsCOMPtr<nsIChannel> mTransport; + nsresult mStatus; protected: nsresult SendRequest(nsIChannel* aChannel); diff --git a/mozilla/netwerk/protocol/finger/src/nsFingerHandler.cpp b/mozilla/netwerk/protocol/finger/src/nsFingerHandler.cpp index 0b3e5624fe4..d6e6606cfc3 100644 --- a/mozilla/netwerk/protocol/finger/src/nsFingerHandler.cpp +++ b/mozilla/netwerk/protocol/finger/src/nsFingerHandler.cpp @@ -95,14 +95,7 @@ nsFingerHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsFingerHandler::NewChannel(const char* verb, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsFingerHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv; @@ -110,8 +103,7 @@ nsFingerHandler::NewChannel(const char* verb, nsIURI* url, rv = nsFingerChannel::Create(nsnull, NS_GET_IID(nsIChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(url); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/protocol/ftp/public/Makefile.in b/mozilla/netwerk/protocol/ftp/public/Makefile.in index e2d59b2634b..2b599f8ce84 100644 --- a/mozilla/netwerk/protocol/ftp/public/Makefile.in +++ b/mozilla/netwerk/protocol/ftp/public/Makefile.in @@ -30,7 +30,6 @@ MODULE = necko XPIDL_MODULE = necko_ftp XPIDLSRCS = \ - nsPIFTPChannel.idl \ nsIConnectionCache.idl \ $(NULL) diff --git a/mozilla/netwerk/protocol/ftp/public/makefile.win b/mozilla/netwerk/protocol/ftp/public/makefile.win index 6158e477265..9e4883cd8ac 100644 --- a/mozilla/netwerk/protocol/ftp/public/makefile.win +++ b/mozilla/netwerk/protocol/ftp/public/makefile.win @@ -27,7 +27,6 @@ include <$(DEPTH)/config/config.mak> XPIDL_MODULE = necko_ftp XPIDLSRCS = \ - .\nsPIFTPChannel.idl \ .\nsIConnectionCache.idl \ $(NULL) diff --git a/mozilla/netwerk/protocol/ftp/src/nsAsyncEvent.cpp b/mozilla/netwerk/protocol/ftp/src/nsAsyncEvent.cpp index da530417619..deae660b241 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsAsyncEvent.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsAsyncEvent.cpp @@ -91,22 +91,26 @@ nsFTPAsyncReadEvent::nsFTPAsyncReadEvent(nsIStreamListener* listener, NS_IMETHODIMP nsFTPAsyncReadEvent::HandleEvent() { - return mChannel->AsyncRead(0, -1, mContext, mListener); + return mChannel->AsyncRead(mListener, mContext); } nsFTPAsyncWriteEvent::nsFTPAsyncWriteEvent(nsIInputStream* inStream, - PRUint32 writeCount, - nsIStreamObserver* observer, - nsIChannel* channel, - nsISupports* context) - : nsAsyncEvent(channel, context), mObserver(observer), - mInStream(inStream), mWriteCount(writeCount) -{ } + PRUint32 writeCount, + nsIStreamObserver* observer, + nsIChannel* channel, + nsISupports* context) + : nsAsyncEvent(channel, context), mObserver(observer), + mInStream(inStream), mWriteCount(writeCount) +{ +} NS_IMETHODIMP nsFTPAsyncWriteEvent::HandleEvent() { - return mChannel->AsyncWrite(mInStream, 0, mWriteCount, mContext, mObserver); + nsresult rv; + rv = mChannel->SetTransferCount(mWriteCount); + if (NS_FAILED(rv)) return rv; + return mChannel->AsyncWrite(mInStream, mObserver, mContext); } diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp index 478bd851340..4e4e5b12b69 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp @@ -43,43 +43,38 @@ extern PRLogModuleInfo* gFTPLog; // initiated by the server (PORT command) or by the client (PASV command). // Client initiation is the most command case and is attempted first. -nsFTPChannel::nsFTPChannel() { +nsFTPChannel::nsFTPChannel() + : mConnected(PR_FALSE), + mLoadAttributes(LOAD_NORMAL), + mSourceOffset(0), + mAmount(0), + mContentLength(-1), + mLock(nsnull), + mBufferSegmentSize(0), + mBufferMaxSize(0), + mStatus(NS_OK) +{ NS_INIT_REFCNT(); - mConnected = PR_FALSE; - mLoadAttributes = LOAD_NORMAL; - mSourceOffset = 0; - mAmount = 0; - mContentLength = -1; - mLock = nsnull; } -nsFTPChannel::~nsFTPChannel() { +nsFTPChannel::~nsFTPChannel() +{ nsXPIDLCString spec; mURL->GetSpec(getter_Copies(spec)); PR_LOG(gFTPLog, PR_LOG_ALWAYS, ("~nsFTPChannel() for %s", (const char*)spec)); if (mLock) PR_DestroyLock(mLock); } -NS_IMPL_THREADSAFE_ADDREF(nsFTPChannel); -NS_IMPL_THREADSAFE_RELEASE(nsFTPChannel); -NS_IMPL_QUERY_INTERFACE7(nsFTPChannel, - nsPIFTPChannel, - nsIChannel, - nsIRequest, - nsIInterfaceRequestor, - nsIProgressEventSink, - nsIStreamListener, - nsIStreamObserver); +NS_IMPL_THREADSAFE_ISUPPORTS6(nsFTPChannel, + nsIChannel, + nsIRequest, + nsIInterfaceRequestor, + nsIProgressEventSink, + nsIStreamListener, + nsIStreamObserver); nsresult -nsFTPChannel::Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, +nsFTPChannel::Init(nsIURI* uri, nsIProtocolHandler* aHandler, nsIThreadPool* aPool) { @@ -95,24 +90,11 @@ nsFTPChannel::Init(const char* verb, NS_ASSERTION(aPool, "FTP channel needs a thread pool to play in"); if (!aPool) return NS_ERROR_NULL_POINTER; mPool = aPool; - mOriginalURI = originalURI ? originalURI : uri; mURL = uri; rv = mURL->GetHost(getter_Copies(mHost)); if (NS_FAILED(rv)) return rv; - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - - mBufferSegmentSize = bufferSegmentSize; - mBufferMaxSize = bufferMaxSize; - NS_ASSERTION(!mLock, "Init should only be called once on a channel"); mLock = PR_NewLock(); if (!mLock) return NS_ERROR_OUT_OF_MEMORY; @@ -152,17 +134,26 @@ nsFTPChannel::IsPending(PRBool *result) { nsAutoLock lock(mLock); if (mProxyChannel) return mProxyChannel->IsPending(result); + NS_NOTREACHED("nsFTPChannel::IsPending"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsFTPChannel::Cancel(void) { +nsFTPChannel::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::Cancel(nsresult status) { nsresult rv; nsAutoLock lock(mLock); + mStatus = status; if (mProxyChannel) { - return mProxyChannel->Cancel(); + return mProxyChannel->Cancel(status); } else if (mConnThread) { - rv = mConnThread->Cancel(); + rv = mConnThread->Cancel(status); mConnThread = nsnull; mConnected = PR_FALSE; return rv; @@ -196,15 +187,22 @@ nsFTPChannel::Resume(void) { // nsIChannel methods: NS_IMETHODIMP -nsFTPChannel::GetOriginalURI(nsIURI * *aURL) +nsFTPChannel::GetOriginalURI(nsIURI* *aURL) { - *aURL = mOriginalURI; + *aURL = mOriginalURI ? mOriginalURI : mURL; NS_ADDREF(*aURL); return NS_OK; } NS_IMETHODIMP -nsFTPChannel::GetURI(nsIURI * *aURL) +nsFTPChannel::SetOriginalURI(nsIURI* aURL) +{ + mOriginalURI = aURL; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetURI(nsIURI* *aURL) { *aURL = mURL; NS_ADDREF(*aURL); @@ -212,15 +210,21 @@ nsFTPChannel::GetURI(nsIURI * *aURL) } NS_IMETHODIMP -nsFTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **_retval) +nsFTPChannel::SetURI(nsIURI* aURL) +{ + mURL = aURL; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::OpenInputStream(nsIInputStream **result) { nsresult rv = NS_OK; PR_LOG(gFTPLog, PR_LOG_DEBUG, ("nsFTPChannel::OpenInputStream() called\n")); if (mProxyChannel) { - return mProxyChannel->OpenInputStream(startPosition, readCount, _retval); + return mProxyChannel->OpenInputStream(result); } if (mConnected) { @@ -234,7 +238,7 @@ nsFTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, // when data become available to it. nsCOMPtr<nsIBufferOutputStream> bufOutStream; // we don't use this piece nsCOMPtr<nsIStreamListener> listener; - rv = NS_NewSyncStreamListener(_retval, getter_AddRefs(bufOutStream), + rv = NS_NewSyncStreamListener(result, getter_AddRefs(bufOutStream), getter_AddRefs(listener)); if (NS_FAILED(rv)) return rv; @@ -242,8 +246,6 @@ nsFTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, /////////////////////////// //// setup channel state - mSourceOffset = startPosition; - mAmount = readCount; //////////////////////////////// //// setup the channel thread @@ -269,23 +271,23 @@ nsFTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, } NS_IMETHODIMP -nsFTPChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsFTPChannel::OpenOutputStream(nsIOutputStream **result) { if (mProxyChannel) - return mProxyChannel->OpenOutputStream(startPosition, _retval); + return mProxyChannel->OpenOutputStream(result); + NS_NOTREACHED("nsFTPChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsFTPChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) { + NS_NOTREACHED("nsFTPChannel::AsyncOpen"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsFTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *listener) +nsFTPChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { nsresult rv; @@ -300,18 +302,17 @@ nsFTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, if (NS_FAILED(rv)) return rv; } - /////////////////////////// - //// setup channel state - mSourceOffset = startPosition; - mAmount = readCount; - if (mLoadGroup) { rv = mLoadGroup->AddChannel(this, nsnull); if (NS_FAILED(rv)) return rv; } if (mProxyChannel) { - return mProxyChannel->AsyncRead(startPosition, readCount, ctxt, this); + rv = mProxyChannel->SetTransferOffset(mSourceOffset); + if (NS_FAILED(rv)) return rv; + rv = mProxyChannel->SetTransferCount(mAmount); + if (NS_FAILED(rv)) return rv; + return mProxyChannel->AsyncRead(this, ctxt); } if (mConnected) { @@ -340,10 +341,8 @@ nsFTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsFTPChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { nsresult rv = NS_OK; @@ -351,12 +350,15 @@ nsFTPChannel::AsyncWrite(nsIInputStream *fromStream, mUserContext = ctxt; if (mProxyChannel) { - return mProxyChannel->AsyncWrite(fromStream, startPosition, - writeCount, ctxt, observer); + rv = mProxyChannel->SetTransferOffset(mSourceOffset); + if (NS_FAILED(rv)) return rv; + rv = mProxyChannel->SetTransferCount(mAmount); + if (NS_FAILED(rv)) return rv; + return mProxyChannel->AsyncWrite(fromStream, observer, ctxt); } - NS_ASSERTION(writeCount > 0, "FTP requires stream len info"); - if (writeCount < 1) return NS_ERROR_NOT_INITIALIZED; + NS_ASSERTION(mAmount > 0, "FTP requires stream len info"); + if (mAmount < 1) return NS_ERROR_NOT_INITIALIZED; nsFtpConnectionThread *thread = nsnull; NS_NEWXPCOM(thread, nsFtpConnectionThread); @@ -367,7 +369,7 @@ nsFTPChannel::AsyncWrite(nsIInputStream *fromStream, mHandler = 0; if (NS_FAILED(rv)) return rv; - rv = thread->SetWriteStream(fromStream, writeCount); + rv = thread->SetWriteStream(fromStream, mAmount); if (NS_FAILED(rv)) return rv; rv = thread->SetStreamObserver(this, ctxt); @@ -445,6 +447,91 @@ nsFTPChannel::GetContentLength(PRInt32 *aContentLength) return NS_OK; } +NS_IMETHODIMP +nsFTPChannel::SetContentLength(PRInt32 aContentLength) +{ + nsAutoLock lock(mLock); + mContentLength = aContentLength; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mSourceOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + mSourceOffset = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mAmount; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::SetTransferCount(PRInt32 aTransferCount) +{ + mAmount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_TRUE; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsFTPChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsFTPChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -505,13 +592,6 @@ nsFTPChannel::GetSecurityInfo(nsISupports * *aSecurityInfo) return NS_OK; } -NS_IMETHODIMP -nsFTPChannel::SetContentLength(PRInt32 aLength) { - nsAutoLock lock(mLock); - mContentLength = aLength; - return NS_OK; -} - // nsIInterfaceRequestor method NS_IMETHODIMP nsFTPChannel::GetInterface(const nsIID &anIID, void **aResult ) { diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h index ebd4db74880..42d264f3b18 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.h @@ -25,7 +25,6 @@ #ifndef nsFTPChannel_h___ #define nsFTPChannel_h___ -#include "nsPIFTPChannel.h" #include "nsIURI.h" #include "nsString.h" #include "nsILoadGroup.h" @@ -40,7 +39,7 @@ #include "nsIStreamListener.h" #include "nsAutoLock.h" -class nsFTPChannel : public nsPIFTPChannel, +class nsFTPChannel : public nsIChannel, public nsIInterfaceRequestor, public nsIProgressEventSink, public nsIStreamListener { @@ -48,7 +47,6 @@ public: NS_DECL_ISUPPORTS NS_DECL_NSIREQUEST NS_DECL_NSICHANNEL - NS_DECL_NSPIFTPCHANNEL NS_DECL_NSIINTERFACEREQUESTOR NS_DECL_NSIPROGRESSEVENTSINK NS_DECL_NSISTREAMLISTENER @@ -65,14 +63,7 @@ public: // initializes the channel. creates the FTP connection thread // and returns it so the protocol handler can cache it and // join() it on shutdown. - nsresult Init(const char* verb, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, + nsresult Init(nsIURI* uri, nsIProtocolHandler* aHandler, nsIThreadPool* aPool); @@ -106,6 +97,7 @@ protected: nsXPIDLCString mHost; PRLock* mLock; nsCOMPtr<nsISupports> mUserContext; + nsresult mStatus; }; #endif /* nsFTPChannel_h___ */ diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp index 318946bfb29..001aaa8525e 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp @@ -78,6 +78,12 @@ nsFtpConnectionThread::nsFtpConnectionThread() { mPort = 21; mLock = nsnull; + mPasv = 0; + mLastModified = 0; + mAsyncReadEvent = 0; + mWriteCount = -1; + mBufferSegmentSize = 0; + mBufferMaxSize = 0; } nsFtpConnectionThread::~nsFtpConnectionThread() { @@ -133,14 +139,14 @@ nsFtpConnectionThread::Process() { if (NS_FAILED(rv)) return rv; // get the output stream so we can write to the server - rv = mCPipe->OpenOutputStream(0, getter_AddRefs(mCOutStream)); + rv = mCPipe->OpenOutputStream(getter_AddRefs(mCOutStream)); if (NS_FAILED(rv)) { mInternalError = rv; mState = FTP_ERROR; break; } - rv = mCPipe->OpenInputStream(0, -1, getter_AddRefs(mCInStream)); + rv = mCPipe->OpenInputStream(getter_AddRefs(mCInStream)); if (NS_FAILED(rv)) { mInternalError = rv; mState = FTP_ERROR; @@ -1497,20 +1503,27 @@ nsFtpConnectionThread::IsPending(PRBool *result) } NS_IMETHODIMP -nsFtpConnectionThread::Cancel(void) +nsFtpConnectionThread::GetStatus(nsresult *status) +{ + *status = mInternalError; + return NS_OK; +} + +NS_IMETHODIMP +nsFtpConnectionThread::Cancel(nsresult status) { nsresult rv = NS_OK; nsAutoLock aLock(mLock); if (mCPipe) { - rv = mCPipe->Cancel(); + rv = mCPipe->Cancel(status); if (NS_FAILED(rv)) return rv; } if (mDPipe) { - rv = mDPipe->Cancel(); + rv = mDPipe->Cancel(status); if (NS_FAILED(rv)) return rv; } - mInternalError = NS_ERROR_FAILURE; + mInternalError = status; mState = FTP_COMPLETE; return rv; } @@ -1683,7 +1696,7 @@ nsFtpConnectionThread::StopProcessing() { if (mObserver) { nsCOMPtr<nsIStreamObserver> asyncObserver; - rv = NS_NewAsyncStreamObserver(mObserver, mEventQueue, getter_AddRefs(asyncObserver)); + rv = NS_NewAsyncStreamObserver(getter_AddRefs(asyncObserver), mObserver, mEventQueue); if(NS_FAILED(rv)) return rv; // we only want to fire OnStop. No OnStart has been fired, and @@ -1694,7 +1707,7 @@ nsFtpConnectionThread::StopProcessing() { if (mListener) { nsCOMPtr<nsIStreamListener> asyncListener; - rv = NS_NewAsyncStreamListener(mListener, mEventQueue, getter_AddRefs(asyncListener)); + rv = NS_NewAsyncStreamListener(getter_AddRefs(asyncListener), mListener, mEventQueue); if(NS_FAILED(rv)) return rv; // we only want to fire OnStop. No OnStart has been fired, and diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h index 146e43a3343..8bb50474223 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpConnectionThread.h @@ -31,7 +31,7 @@ #include "nsIURI.h" #include "prtime.h" #include "nsString.h" -#include "nsPIFTPChannel.h" +#include "nsIChannel.h" #include "nsIConnectionCache.h" #include "nsConnectionCacheObj.h" #include "nsIProtocolHandler.h" @@ -200,7 +200,7 @@ private: PRBool mConnected; // are we connected. PRBool mSentStart; // have we sent an OnStartRequest() notification PRUint8 mSuspendCount;// number of times we've been suspended. - nsCOMPtr<nsPIFTPChannel> mFTPChannel;// used to synchronize w/ our owning channel. + nsCOMPtr<nsIChannel> mFTPChannel;// used to synchronize w/ our owning channel. PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; PRLock *mLock; diff --git a/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp b/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp index 36df3e3e351..844b7869fca 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFtpProtocolHandler.cpp @@ -159,14 +159,7 @@ nsFtpProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsFtpProtocolHandler::NewChannel(const char* verb, nsIURI* url, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsFtpProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result) { nsresult rv = NS_OK; @@ -179,11 +172,10 @@ nsFtpProtocolHandler::NewChannel(const char* verb, nsIURI* url, } nsFTPChannel* channel; - rv = nsFTPChannel::Create(nsnull, NS_GET_IID(nsPIFTPChannel), (void**)&channel); + rv = nsFTPChannel::Create(nsnull, NS_GET_IID(nsIChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(verb, url, aLoadGroup, notificationCallbacks, loadAttributes, - originalURI, bufferSegmentSize, bufferMaxSize, this, mPool); + rv = channel->Init(url, this, mPool); if (NS_FAILED(rv)) { NS_RELEASE(channel); PR_LOG(gFTPLog, PR_LOG_DEBUG, ("nsFtpProtocolHandler::NewChannel() FAILED\n")); @@ -202,13 +194,7 @@ nsFtpProtocolHandler::NewChannel(const char* verb, nsIURI* url, rv = NS_NewURI(getter_AddRefs(uri), "http://"); if (NS_FAILED(rv)) return rv; - rv = httpHandler->NewChannel(verb, uri, aLoadGroup, - NS_STATIC_CAST(nsIInterfaceRequestor*, channel), - loadAttributes, - url, - bufferSegmentSize, - bufferMaxSize, - getter_AddRefs(proxyChannel)); + rv = httpHandler->NewChannel(uri, getter_AddRefs(proxyChannel)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(proxyChannel, &rv); diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp index e1107f93b99..1ff7155a0dd 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file @@ -75,17 +75,11 @@ extern PRLogModuleInfo* gHTTPLog; static NS_DEFINE_CID(kMIMEServiceCID, NS_MIMESERVICE_CID); static NS_DEFINE_IID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); -nsHTTPChannel::nsHTTPChannel(nsIURI* i_URL, - const char *i_Verb, - nsIURI* originalURI, - nsHTTPHandler* i_Handler, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize): +nsHTTPChannel::nsHTTPChannel(nsIURI* i_URL, nsHTTPHandler* i_Handler): mResponse(nsnull), mHandler(dont_QueryInterface(i_Handler)), mHTTPServerListener(nsnull), mResponseContext(nsnull), - mOriginalURI(dont_QueryInterface(originalURI ? originalURI : i_URL)), mURI(dont_QueryInterface(i_URL)), mConnected(PR_FALSE), mState(HS_IDLE), @@ -99,21 +93,20 @@ nsHTTPChannel::nsHTTPChannel(nsIURI* i_URL, mAuthTriedWithPrehost(PR_FALSE), mProxy(0), mProxyPort(-1), - mBufferSegmentSize(bufferSegmentSize), - mBufferMaxSize(bufferMaxSize) + mBufferSegmentSize(0), + mBufferMaxSize(0), + mStatus(NS_OK) { NS_INIT_REFCNT(); #if defined(PR_LOGGING) - nsXPIDLCString urlCString; - mURI->GetSpec(getter_Copies(urlCString)); + nsXPIDLCString urlCString; + mURI->GetSpec(getter_Copies(urlCString)); - PR_LOG(gHTTPLog, PR_LOG_DEBUG, - ("Creating nsHTTPChannel [this=%x] for URI: %s.\n", - this, (const char *)urlCString)); + PR_LOG(gHTTPLog, PR_LOG_DEBUG, + ("Creating nsHTTPChannel [this=%x] for URI: %s.\n", + this, (const char *)urlCString)); #endif - - mVerb = i_Verb; } nsHTTPChannel::~nsHTTPChannel() @@ -137,15 +130,13 @@ nsHTTPChannel::~nsHTTPChannel() CRTFREEIF(mProxy); } -NS_IMPL_THREADSAFE_ADDREF(nsHTTPChannel) -NS_IMPL_THREADSAFE_RELEASE(nsHTTPChannel) - -NS_IMPL_QUERY_INTERFACE5(nsHTTPChannel, - nsIHTTPChannel, - nsIChannel, - nsIInterfaceRequestor, - nsIProgressEventSink, - nsIProxy); +NS_IMPL_THREADSAFE_ISUPPORTS6(nsHTTPChannel, + nsIHTTPChannel, + nsIChannel, + nsIInterfaceRequestor, + nsIProgressEventSink, + nsIProxy, + nsIRequest); //////////////////////////////////////////////////////////////////////////////// // nsIRequest methods: @@ -157,7 +148,14 @@ nsHTTPChannel::IsPending(PRBool *result) } NS_IMETHODIMP -nsHTTPChannel::Cancel (void) +nsHTTPChannel::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::Cancel(nsresult status) { nsresult rv; @@ -168,8 +166,8 @@ nsHTTPChannel::Cancel (void) if (!mConnected && (HS_WAITING_FOR_OPEN == mState)) { rv = mHandler->CancelPendingChannel(this); } - - return mRequest->Cancel(); + mStatus = status; + return mRequest->Cancel(status); } NS_IMETHODIMP @@ -190,11 +188,18 @@ nsHTTPChannel::Resume(void) NS_IMETHODIMP nsHTTPChannel::GetOriginalURI(nsIURI* *o_URL) { - *o_URL = mOriginalURI; + *o_URL = mOriginalURI ? mOriginalURI : mURI; NS_IF_ADDREF(*o_URL); return NS_OK; } +NS_IMETHODIMP +nsHTTPChannel::SetOriginalURI(nsIURI* o_URL) +{ + mOriginalURI = o_URL; + return NS_OK; +} + NS_IMETHODIMP nsHTTPChannel::GetURI(nsIURI* *o_URL) { @@ -204,8 +209,14 @@ nsHTTPChannel::GetURI(nsIURI* *o_URL) } NS_IMETHODIMP -nsHTTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **o_Stream) +nsHTTPChannel::SetURI(nsIURI* o_URL) +{ + mURI = o_URL; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::OpenInputStream(nsIInputStream **o_Stream) { nsresult rv; if (mConnected) return NS_ERROR_ALREADY_CONNECTED; @@ -222,15 +233,15 @@ nsHTTPChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, // If the cached data hasn't expired, it's unnecessary to contact // the server. Just hand out the data in the cache. if (mCachedContentIsValid) - rv = ReadFromCache(startPosition, readCount); + rv = ReadFromCache(); return rv; } NS_IMETHODIMP -nsHTTPChannel::OpenOutputStream(PRUint32 startPosition, - nsIOutputStream **_retval) +nsHTTPChannel::OpenOutputStream(nsIOutputStream **_retval) { + NS_NOTREACHED("nsHTTPChannel::OpenOutputStream"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -253,9 +264,7 @@ nsHTTPChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) } NS_IMETHODIMP -nsHTTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *aContext, - nsIStreamListener *listener) +nsHTTPChannel::AsyncRead(nsIStreamListener *listener, nsISupports *aContext) { nsresult rv = NS_OK; @@ -277,7 +286,7 @@ nsHTTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // with the server. Create a stream from the cache, synthesizing all the // various channel-related events. if (mCachedContentIsValid) { - ReadFromCache(startPosition, readCount); + ReadFromCache(); } else if (mOpenObserver) { // we were AsyncOpen()'d NS_ASSERTION(mHTTPServerListener, "ResponseListener was not set!."); @@ -293,11 +302,10 @@ nsHTTPChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsHTTPChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, - PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { + NS_NOTREACHED("nsHTTPChannel::AsyncWrite"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -385,6 +393,90 @@ nsHTTPChannel::GetContentLength(PRInt32 *aContentLength) } +NS_IMETHODIMP +nsHTTPChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsHTTPChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsHTTPChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsHTTPChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsHTTPChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsHTTPChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsHTTPChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsHTTPChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsHTTPChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsHTTPChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsHTTPChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::GetShouldCache(PRBool *aShouldCache) +{ + *aShouldCache = PR_TRUE; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsHTTPChannel::GetLoadGroup(nsILoadGroup * *aLoadGroup) { @@ -658,10 +750,8 @@ nsHTTPChannel::OnProgress(nsIChannel* aChannel, nsISupports* aContext, //////////////////////////////////////////////////////////////////////////////// // nsHTTPChannel methods: -nsresult nsHTTPChannel::Init(nsILoadGroup *aLoadGroup) +nsresult nsHTTPChannel::Init() { - nsresult rv; - /* Set up a request object - later set to a clone of a default request from the handler. TODO @@ -673,9 +763,7 @@ nsresult nsHTTPChannel::Init(nsILoadGroup *aLoadGroup) NS_ADDREF(mRequest); (void) mRequest->SetConnection(this); - rv = SetLoadGroup(aLoadGroup); - - return rv; + return NS_OK; } @@ -897,7 +985,7 @@ nsHTTPChannel::CheckCache() // method creates a stream from the cache, synthesizing all the various // channel-related events. nsresult -nsHTTPChannel::ReadFromCache(PRUint32 aStartPosition, PRInt32 aReadCount) +nsHTTPChannel::ReadFromCache() { nsresult rv; @@ -912,19 +1000,19 @@ nsHTTPChannel::ReadFromCache(PRUint32 aStartPosition, PRInt32 aReadCount) return NS_ERROR_FAILURE; #if defined(PR_LOGGING) - nsresult log_rv; - char *URLSpec; + nsresult log_rv; + char *URLSpec; - log_rv = mURI->GetSpec(&URLSpec); - if (NS_FAILED(log_rv)) { - URLSpec = nsCRT::strdup("?"); - } + log_rv = mURI->GetSpec(&URLSpec); + if (NS_FAILED(log_rv)) { + URLSpec = nsCRT::strdup("?"); + } - PR_LOG(gHTTPLog, PR_LOG_ALWAYS, - ("nsHTTPChannel::ReadFromCache [this=%x].\t" - "Using cache copy for: %s\n", - this, URLSpec)); - nsAllocator::Free(URLSpec); + PR_LOG(gHTTPLog, PR_LOG_ALWAYS, + ("nsHTTPChannel::ReadFromCache [this=%x].\t" + "Using cache copy for: %s\n", + this, URLSpec)); + nsAllocator::Free(URLSpec); #endif /* PR_LOGGING */ // Create a cache transport to read the cached response... @@ -952,8 +1040,7 @@ nsHTTPChannel::ReadFromCache(PRUint32 aStartPosition, PRInt32 aReadCount) FinishedResponseHeaders(); // Pump the cache data downstream - rv = cacheTransport->AsyncRead(aStartPosition, aReadCount, - mResponseContext, listener); + rv = cacheTransport->AsyncRead(listener, mResponseContext); NS_RELEASE(listener); if (NS_FAILED(rv)) { ResponseCompleted(nsnull, rv, 0); @@ -1133,7 +1220,7 @@ nsHTTPChannel::Open(void) // and the cache data is usable, so start pumping the data from // the cache... if (!mOpenObserver) { - rv = ReadFromCache(0, -1); + rv = ReadFromCache(); } return NS_OK; } @@ -1299,12 +1386,14 @@ nsresult nsHTTPChannel::Redirect(const char *aNewLocation, NS_WITH_SERVICE(nsIScriptSecurityManager, securityManager, NS_SCRIPTSECURITYMANAGER_PROGID, &rv); if (NS_FAILED(rv)) return rv; - rv = securityManager->CheckLoadURI(mOriginalURI, newURI, PR_TRUE); + rv = securityManager->CheckLoadURI(mOriginalURI ? mOriginalURI : mURI, newURI, PR_TRUE); if (NS_FAILED(rv)) return rv; - rv = serv->NewChannelFromURI(mVerb.GetBuffer(), newURI, mLoadGroup, - mCallbacks, mLoadAttributes, mOriginalURI, - mBufferSegmentSize, mBufferMaxSize, getter_AddRefs(channel)); + rv = NS_OpenURI(getter_AddRefs(channel), newURI, serv, mLoadGroup, + mCallbacks, mLoadAttributes, + mBufferSegmentSize, mBufferMaxSize); + if (NS_FAILED(rv)) return rv; + rv = channel->SetOriginalURI(mOriginalURI); if (NS_FAILED(rv)) return rv; // Convey the referrer if one was used for this channel to the next one- @@ -1318,7 +1407,7 @@ nsresult nsHTTPChannel::Redirect(const char *aNewLocation, } // Start the redirect... - rv = channel->AsyncRead(0, -1, mResponseContext, mResponseDataListener); + rv = channel->AsyncRead(mResponseDataListener, mResponseContext); // // Fire the OnRedirect(...) notification. @@ -1564,14 +1653,12 @@ nsHTTPChannel::Authenticate(const char *iChallenge, PRBool iProxyAuth) // 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, - mBufferSegmentSize, mBufferMaxSize, - &channel);// delibrately... + rv = NS_OpenURI(&channel, // delibrately... + mURI, serv, mLoadGroup, mCallbacks, + mLoadAttributes, mBufferSegmentSize, mBufferMaxSize); if (NS_FAILED(rv)) return rv; - if (!channel) - return NS_ERROR_OUT_OF_MEMORY; + rv = channel->SetOriginalURI(mOriginalURI); + if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(channel); NS_ASSERTION(httpChannel, "Something terrible happened..!"); @@ -1587,7 +1674,7 @@ nsHTTPChannel::Authenticate(const char *iChallenge, PRBool iProxyAuth) httpChannel->SetAuthTriedWithPrehost(PR_TRUE); // Fire the new request... - rv = channel->AsyncRead(0, -1, mResponseContext, mResponseDataListener); + rv = channel->AsyncRead(mResponseDataListener, mResponseContext); // Abort the current response... This will disconnect the consumer from // the response listener... Thus allowing the entity that follows to @@ -1847,7 +1934,7 @@ nsHTTPChannel::ProcessNotModifiedResponse (nsIStreamListener *aListener) cacheListener->SetListener(aListener); mResponseDataListener = aListener; - rv = cacheTransport->AsyncRead(0, -1, mResponseContext, cacheListener); + rv = cacheTransport->AsyncRead(cacheListener, mResponseContext); if (NS_FAILED(rv)) { ResponseCompleted(cacheListener, rv, nsnull); } diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h index b4ed2ba3db2..581d2b0f37e 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h +++ b/mozilla/netwerk/protocol/http/src/nsHTTPChannel.h @@ -70,12 +70,7 @@ class nsHTTPChannel : public nsIHTTPChannel, public: // Constructors and Destructor - nsHTTPChannel(nsIURI* i_URL, - const char* verb, - nsIURI* originalURI, - nsHTTPHandler* i_Handler, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsHTTPChannel(nsIURI* i_URL, nsHTTPHandler* i_Handler); virtual ~nsHTTPChannel(); @@ -90,7 +85,7 @@ public: // nsHTTPChannel methods: nsresult Authenticate(const char *iChallenge, PRBool bProxyAuth = PR_FALSE); - nsresult Init(nsILoadGroup *aGroup); + nsresult Init(); nsresult Open(); nsresult Redirect(const char *aURL, nsIChannel **aResult); @@ -112,7 +107,7 @@ public: protected: nsresult CheckCache(); - nsresult ReadFromCache(PRUint32 aStartPosition, PRInt32 aReadCount); + nsresult ReadFromCache(); nsresult ProcessStatusCode(); nsresult ProcessRedirection(PRInt32 aStatusCode); nsresult ProcessAuthentication(PRInt32 aStatusCode); @@ -134,7 +129,6 @@ protected: nsCOMPtr<nsIURI> mURI; PRBool mConnected; HTTPState mState; - nsCString mVerb; nsCOMPtr<nsIHTTPEventSink> mEventSink; nsCOMPtr<nsIPrompt> mPrompter; nsCOMPtr<nsIProgressEventSink> mProgressEventSink; @@ -173,6 +167,7 @@ protected: PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + nsresult mStatus; }; #endif /* _nsHTTPChannel_h_ */ diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp b/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp index 5e206fb6db0..046f481daae 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHTTPHandler.cpp @@ -207,14 +207,7 @@ nsHTTPHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsHTTPHandler::NewChannel(const char* verb, nsIURI* i_URL, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **o_Instance) +nsHTTPHandler::NewChannel(nsIURI* i_URL, nsIChannel **o_Instance) { nsresult rv; nsHTTPChannel* pChannel = nsnull; @@ -255,20 +248,11 @@ nsHTTPHandler::NewChannel(const char* verb, nsIURI* i_URL, } // Create one - pChannel = new nsHTTPChannel(i_URL, - verb, - originalURI, - this, - bufferSegmentSize, - bufferMaxSize); + pChannel = new nsHTTPChannel(i_URL, this); if (pChannel) { PRBool checkForProxy = PR_FALSE; NS_ADDREF(pChannel); - rv = pChannel->Init(aLoadGroup); - if (NS_FAILED(rv)) goto done; - rv = pChannel->SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) goto done; - rv = pChannel->SetNotificationCallbacks(notificationCallbacks); + rv = pChannel->Init(); if (NS_FAILED(rv)) goto done; rv = mProxySvc->GetProxyEnabled(&checkForProxy); @@ -325,7 +309,7 @@ nsHTTPHandler::NewPostDataStream(PRBool isFile, if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIInputStream> in; - rv = NS_NewFileInputStream(file, getter_AddRefs(in)); + rv = NS_NewLocalFileInputStream(getter_AddRefs(in), file); if (NS_FAILED(rv)) return rv; @@ -837,6 +821,25 @@ nsresult nsHTTPHandler::RequestTransport(nsIURI* i_Uri, *o_pTrans = nsnull; PRUint32 count = 0; + count = 0; + mTransportList->Count(&count); + if (count >= MAX_NUMBER_OF_OPEN_TRANSPORTS) { + + // XXX this method incorrectly returns a bool + rv = mPendingChannelList->AppendElement( + (nsISupports*)(nsIRequest*)i_Channel) + ? NS_OK : NS_ERROR_FAILURE; + NS_ASSERTION(NS_SUCCEEDED(rv), "AppendElement failed"); + + PR_LOG(gHTTPLog, PR_LOG_ALWAYS, + ("nsHTTPHandler::RequestTransport." + "\tAll socket transports are busy." + "\tAdding nsHTTPChannel [%x] to pending list.\n", + i_Channel)); + + return NS_ERROR_BUSY; + } + PRInt32 port; nsXPIDLCString host; diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPRequest.cpp b/mozilla/netwerk/protocol/http/src/nsHTTPRequest.cpp index 740d1d35d5c..1dc8b700202 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPRequest.cpp +++ b/mozilla/netwerk/protocol/http/src/nsHTTPRequest.cpp @@ -62,7 +62,8 @@ nsHTTPRequest::nsHTTPRequest(nsIURI* i_URL, nsHTTPHandler* i_Handler, PRUint32 b mBufferSegmentSize(bufferSegmentSize), mBufferMaxSize(bufferMaxSize), mAttempts (0), - mHandler (i_Handler) + mHandler (i_Handler), + mAbortStatus(NS_OK) { NS_INIT_REFCNT(); @@ -96,10 +97,7 @@ nsHTTPRequest::~nsHTTPRequest() //////////////////////////////////////////////////////////////////////////////// // nsISupports methods: -NS_IMPL_THREADSAFE_ADDREF(nsHTTPRequest); -NS_IMPL_THREADSAFE_RELEASE(nsHTTPRequest); - -NS_IMPL_QUERY_INTERFACE2(nsHTTPRequest, nsIStreamObserver, nsIRequest); +NS_IMPL_THREADSAFE_ISUPPORTS2(nsHTTPRequest, nsIStreamObserver, nsIRequest) //////////////////////////////////////////////////////////////////////////////// // nsIRequest methods: @@ -119,12 +117,20 @@ nsHTTPRequest::IsPending(PRBool *result) } NS_IMETHODIMP -nsHTTPRequest::Cancel(void) +nsHTTPRequest::GetStatus(nsresult *status) +{ + *status = mAbortStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsHTTPRequest::Cancel(nsresult status) { nsresult rv = NS_ERROR_FAILURE; + mAbortStatus = status; if (mTransport) { - rv = mTransport->Cancel(); + rv = mTransport->Cancel(status); } return rv; } @@ -167,7 +173,9 @@ nsresult nsHTTPRequest::WriteRequest () if (!mTransport) { - rv = mHandler -> RequestTransport (mURI, mConnection, mBufferSegmentSize, mBufferMaxSize, getter_AddRefs (mTransport), mAttempts ? TRANSPORT_OPEN_ALWAYS : TRANSPORT_REUSE_ALIVE); + rv = mHandler -> RequestTransport (mURI, mConnection, mBufferSegmentSize, mBufferMaxSize, + getter_AddRefs (mTransport), + mAttempts ? TRANSPORT_OPEN_ALWAYS : TRANSPORT_REUSE_ALIVE); if (NS_FAILED (rv)) return rv; @@ -308,8 +316,9 @@ nsresult nsHTTPRequest::WriteRequest () // // Write the request to the server. // - rv = mTransport->AsyncWrite(stream, 0, mRequestBuffer.Length(), - (nsISupports*)(nsIRequest*)mConnection, this); + rv = mTransport->SetTransferCount(mRequestBuffer.Length()); + if (NS_FAILED(rv)) return rv; + rv = mTransport->AsyncWrite(stream, this, (nsISupports*)(nsIRequest*)mConnection); return rv; } @@ -425,7 +434,7 @@ nsHTTPRequest::OnStopRequest (nsIChannel* channel, nsISupports* i_Context, PR_LOG(gHTTPLog, PR_LOG_ALWAYS, ("nsHTTPRequest [this=%x]. Writing POST data to the server.\n", this)); - rv = mTransport -> AsyncWrite (mPostDataStream, 0, -1, (nsISupports*)(nsIRequest*)mConnection, this); + rv = mTransport -> AsyncWrite (mPostDataStream, this, (nsISupports*)(nsIRequest*)mConnection); /* the mPostDataStream is released below... */ } @@ -441,7 +450,7 @@ nsHTTPRequest::OnStopRequest (nsIChannel* channel, nsISupports* i_Context, if (pListener) { NS_ADDREF (pListener); - rv = mTransport -> AsyncRead (0, -1, i_Context, pListener); + rv = mTransport -> AsyncRead (pListener, i_Context); NS_RELEASE (pListener); } else diff --git a/mozilla/netwerk/protocol/http/src/nsHTTPRequest.h b/mozilla/netwerk/protocol/http/src/nsHTTPRequest.h index c7d63036664..a98bae3e278 100644 --- a/mozilla/netwerk/protocol/http/src/nsHTTPRequest.h +++ b/mozilla/netwerk/protocol/http/src/nsHTTPRequest.h @@ -144,7 +144,7 @@ protected: HTTPMethod mMethod; nsCOMPtr<nsIURL> mURI; - PRUint32 mVersion; + PRUint32 mVersion; PRUint32 mKeepAliveTimeout; PRUint32 mAttempts; PRBool mDoKeepAlive; @@ -161,6 +161,7 @@ protected: PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + nsresult mAbortStatus; nsresult formHeaders (); }; diff --git a/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp b/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp index 8fea9b0b78b..4562beb5d91 100644 --- a/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp +++ b/mozilla/netwerk/protocol/jar/src/nsJARChannel.cpp @@ -35,7 +35,6 @@ static NS_DEFINE_CID(kFileTransportServiceCID, NS_FILETRANSPORTSERVICE_CID); static NS_DEFINE_CID(kMIMEServiceCID, NS_MIMESERVICE_CID); static NS_DEFINE_CID(kZipReaderCID, NS_ZIPREADER_CID); -static NS_DEFINE_CID(kFileChannelCID, NS_FILECHANNEL_CID); static NS_DEFINE_CID(kScriptSecurityManagerCID, NS_SCRIPTSECURITYMANAGER_CID); //////////////////////////////////////////////////////////////////////////////// @@ -63,17 +62,20 @@ public: // after successfully downloading the jar file to the cache, // start the extraction process: nsCOMPtr<nsIFileChannel> jarCacheFile; - rv = NS_NewFileChannel(mJarCacheFile, - PR_RDONLY, - nsnull, // XXX content type - 0, // XXX content length - mJARChannel->mLoadGroup, - mJARChannel->mCallbacks, - mJARChannel->mLoadAttributes, - nsnull, - mJARChannel->mBufferSegmentSize, - mJARChannel->mBufferMaxSize, - getter_AddRefs(jarCacheFile)); + rv = NS_NewLocalFileChannel(getter_AddRefs(jarCacheFile), + mJarCacheFile, + PR_RDONLY, + 0); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetLoadGroup(mJARChannel->mLoadGroup); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetBufferSegmentSize(mJARChannel->mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetBufferMaxSize(mJARChannel->mBufferMaxSize); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetLoadAttributes(mJARChannel->mLoadAttributes); + if (NS_FAILED(rv)) return rv; + rv = jarCacheFile->SetNotificationCallbacks(mJARChannel->mCallbacks); if (NS_FAILED(rv)) return rv; rv = mJARChannel->ExtractJARElement(jarCacheFile); @@ -103,18 +105,16 @@ NS_IMPL_ISUPPORTS1(nsJARDownloadObserver, nsIStreamObserver) //////////////////////////////////////////////////////////////////////////////// nsJARChannel::nsJARChannel() - : mCommand(nsnull), - mContentType(nsnull), + : mContentType(nsnull), mJAREntry(nsnull), - mMonitor(nsnull) + mMonitor(nsnull), + mStatus(NS_OK) { NS_INIT_REFCNT(); } nsJARChannel::~nsJARChannel() { - if (mCommand) - nsCRT::free(mCommand); if (mContentType) nsCRT::free(mContentType); if (mJAREntry) @@ -150,33 +150,10 @@ nsJARChannel::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult) } nsresult -nsJARChannel::Init(nsIJARProtocolHandler* aHandler, - const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsJARChannel::Init(nsIJARProtocolHandler* aHandler, nsIURI* uri) { nsresult rv; mURI = do_QueryInterface(uri, &rv); - if (NS_FAILED(rv)) return rv; - mCommand = nsCRT::strdup(command); - if (mCommand == nsnull) - return NS_ERROR_OUT_OF_MEMORY; - mOriginalURI = originalURI ? originalURI : uri; - mBufferSegmentSize = bufferSegmentSize; - mBufferMaxSize = bufferMaxSize; - - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); if (NS_FAILED(rv)) return rv; mMonitor = PR_NewMonitor(); @@ -192,27 +169,35 @@ nsJARChannel::Init(nsIJARProtocolHandler* aHandler, NS_IMETHODIMP nsJARChannel::IsPending(PRBool* result) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::IsPending"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsJARChannel::Cancel() +nsJARChannel::GetStatus(nsresult *status) +{ + *status = mStatus; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::Cancel(nsresult status) { nsresult rv; nsAutoMonitor monitor(mMonitor); if (mJarCacheTransport) { - rv = mJarCacheTransport->Cancel(); + rv = mJarCacheTransport->Cancel(status); if (NS_FAILED(rv)) return rv; mJarCacheTransport = nsnull; } if (mJarExtractionTransport) { - rv = mJarExtractionTransport->Cancel(); + rv = mJarExtractionTransport->Cancel(status); if (NS_FAILED(rv)) return rv; mJarExtractionTransport = nsnull; } - - return NS_OK; + mStatus = status; + return rv; } NS_IMETHODIMP @@ -257,11 +242,18 @@ nsJARChannel::Resume() NS_IMETHODIMP nsJARChannel::GetOriginalURI(nsIURI* *aOriginalURI) { - *aOriginalURI = mOriginalURI; + *aOriginalURI = mOriginalURI ? mOriginalURI : (nsIURI*)mURI; NS_ADDREF(*aOriginalURI); return NS_OK; } +NS_IMETHODIMP +nsJARChannel::SetOriginalURI(nsIURI* aOriginalURI) +{ + mOriginalURI = aOriginalURI; + return NS_OK; +} + NS_IMETHODIMP nsJARChannel::GetURI(nsIURI* *aURI) { @@ -271,28 +263,36 @@ nsJARChannel::GetURI(nsIURI* *aURI) } NS_IMETHODIMP -nsJARChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream* *result) +nsJARChannel::SetURI(nsIURI* aURI) { - return NS_ERROR_NOT_IMPLEMENTED; + nsresult rv; + mURI = do_QueryInterface(aURI, &rv); + return rv; } NS_IMETHODIMP -nsJARChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *result) +nsJARChannel::OpenInputStream(nsIInputStream* *result) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::OpenInputStream"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsJARChannel::OpenOutputStream(nsIOutputStream* *result) +{ + NS_NOTREACHED("nsJARChannel::OpenOutputStream"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsJARChannel::AsyncOpen(nsIStreamObserver* observer, nsISupports* ctxt) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::AsyncOpen"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports* ctxt, - nsIStreamListener* listener) +nsJARChannel::AsyncRead(nsIStreamListener* listener, nsISupports* ctxt) { nsresult rv; rv = mURI->GetJARFile(getter_AddRefs(mJARBaseURI)); @@ -303,15 +303,19 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsCOMPtr<nsIChannel> jarBaseChannel; rv = NS_OpenURI(getter_AddRefs(jarBaseChannel), - mJARBaseURI, mLoadGroup, mCallbacks, mLoadAttributes); + mJARBaseURI, nsnull); if (NS_FAILED(rv)) return rv; - + rv = jarBaseChannel->SetLoadGroup(mLoadGroup); + if (NS_FAILED(rv)) return rv; + rv = jarBaseChannel->SetLoadAttributes(mLoadAttributes); + if (NS_FAILED(rv)) return rv; + rv = jarBaseChannel->SetNotificationCallbacks(mCallbacks); + if (NS_FAILED(rv)) return rv; + if (mLoadGroup) (void)mLoadGroup->AddChannel(this, nsnull); // XXX need to set a state variable here to say we're reading - mStartPosition = startPosition; - mReadCount = readCount; mUserContext = ctxt; mUserListener = listener; @@ -335,22 +339,14 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, { // then we've already got the file in the local cache -- no need to download it nsCOMPtr<nsIFileChannel> fileChannel; - rv = nsComponentManager::CreateInstance(kFileChannelCID, - nsnull, - NS_GET_IID(nsIFileChannel), - getter_AddRefs(fileChannel)); + rv = NS_NewLocalFileChannel(getter_AddRefs(fileChannel), + jarCacheFile, + PR_RDONLY, + 0); if (NS_FAILED(rv)) return rv; - - rv = fileChannel->Init(jarCacheFile, - PR_RDONLY, - nsnull, // contentType - -1, // contentLength - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - mBufferSegmentSize, - mBufferMaxSize); + rv = fileChannel->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = fileChannel->SetBufferMaxSize(mBufferMaxSize); if (NS_FAILED(rv)) return rv; rv = ExtractJARElement(fileChannel); @@ -365,10 +361,13 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, // use a file transport to serve as a data pump for the download (done // on some other thread) nsCOMPtr<nsIChannel> jarCacheTransport; - rv = fts->CreateTransport(jarCacheFile, PR_RDONLY, mCommand, - mBufferSegmentSize, mBufferMaxSize, + rv = fts->CreateTransport(jarCacheFile, PR_RDONLY, 0, getter_AddRefs(mJarCacheTransport)); if (NS_FAILED(rv)) return rv; + rv = mJarCacheTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = mJarCacheTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; rv = mJarCacheTransport->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; @@ -378,10 +377,10 @@ nsJARChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, return NS_ERROR_OUT_OF_MEMORY; nsCOMPtr<nsIInputStream> jarBaseIn; - rv = jarBaseChannel->OpenInputStream(0, -1, getter_AddRefs(jarBaseIn)); + rv = jarBaseChannel->OpenInputStream(getter_AddRefs(jarBaseIn)); if (NS_FAILED(rv)) return rv; - rv = mJarCacheTransport->AsyncWrite(jarBaseIn, 0, -1, nsnull, downloadObserver); + rv = mJarCacheTransport->AsyncWrite(jarBaseIn, nsnull, downloadObserver); } return rv; } @@ -434,25 +433,28 @@ nsJARChannel::ExtractJARElement(nsIFileChannel* jarBaseFile) NS_WITH_SERVICE(nsIFileTransportService, fts, kFileTransportServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransportFromFileSystem(this, mCommand, - mBufferSegmentSize, mBufferMaxSize, + rv = fts->CreateTransportFromFileSystem(this, getter_AddRefs(mJarExtractionTransport)); if (NS_FAILED(rv)) return rv; + rv = mJarExtractionTransport->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) return rv; + rv = mJarExtractionTransport->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) return rv; rv = mJarExtractionTransport->SetNotificationCallbacks(mCallbacks); if (NS_FAILED(rv)) return rv; - rv = mJarExtractionTransport->AsyncRead(mStartPosition, mReadCount, nsnull, this); + rv = mJarExtractionTransport->AsyncRead(this, nsnull); return rv; } NS_IMETHODIMP -nsJARChannel::AsyncWrite(nsIInputStream* fromStream, PRUint32 startPosition, - PRInt32 writeCount, - nsISupports* ctxt, - nsIStreamObserver* observer) +nsJARChannel::AsyncWrite(nsIInputStream* fromStream, + nsIStreamObserver* observer, + nsISupports* ctxt) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::AsyncWrite"); + return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP @@ -540,6 +542,90 @@ nsJARChannel::GetContentLength(PRInt32* aContentLength) return NS_OK; } +NS_IMETHODIMP +nsJARChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsJARChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsJARChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mStartPosition; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + mStartPosition = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mReadCount; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetTransferCount(PRInt32 aTransferCount) +{ + mReadCount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + *aBufferSegmentSize = mBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + mBufferSegmentSize = aBufferSegmentSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + *aBufferMaxSize = mBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + mBufferMaxSize = aBufferMaxSize; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsJARChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsJARChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsJARChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -711,7 +797,8 @@ nsJARChannel::GetInputStream(nsIInputStream* *aInputStream) NS_IMETHODIMP nsJARChannel::GetOutputStream(nsIOutputStream* *aOutputStream) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::GetOutputStream"); + return NS_ERROR_NOT_IMPLEMENTED; } //////////////////////////////////////////////////////////////////////////////// @@ -720,7 +807,8 @@ nsJARChannel::GetOutputStream(nsIOutputStream* *aOutputStream) NS_IMETHODIMP nsJARChannel::EnumerateEntries(const char *aRoot, nsISimpleEnumerator **_retval) { - return NS_ERROR_NOT_IMPLEMENTED; + NS_NOTREACHED("nsJARChannel::EnumerateEntries"); + return NS_ERROR_NOT_IMPLEMENTED; } //////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/netwerk/protocol/jar/src/nsJARChannel.h b/mozilla/netwerk/protocol/jar/src/nsJARChannel.h index 3c03b0622ae..2bba7d4645b 100644 --- a/mozilla/netwerk/protocol/jar/src/nsJARChannel.h +++ b/mozilla/netwerk/protocol/jar/src/nsJARChannel.h @@ -69,23 +69,13 @@ public: static NS_METHOD Create(nsISupports* aOuter, REFNSIID aIID, void **aResult); - nsresult Init(nsIJARProtocolHandler* aHandler, - const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); - + nsresult Init(nsIJARProtocolHandler* aHandler, nsIURI* uri); nsresult ExtractJARElement(nsIFileChannel* jarFileChannel); nsresult GetCacheFile(nsIFile* *cacheFile); friend class nsJARDownloadObserver; protected: - char* mCommand; nsCOMPtr<nsIJARURI> mURI; nsCOMPtr<nsILoadGroup> mLoadGroup; nsCOMPtr<nsIInterfaceRequestor> mCallbacks; @@ -106,6 +96,7 @@ protected: nsCOMPtr<nsIZipReader> mJAR; PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + nsresult mStatus; PRMonitor* mMonitor; nsCOMPtr<nsIChannel> mJarCacheTransport; diff --git a/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp b/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp index 2a47b9e6952..b24306654f8 100644 --- a/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/jar/src/nsJARProtocolHandler.cpp @@ -117,14 +117,7 @@ nsJARProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsJARProtocolHandler::NewChannel(nsIURI* uri, nsIChannel* *result) { nsresult rv; @@ -132,8 +125,7 @@ nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri, rv = nsJARChannel::Create(nsnull, NS_GET_IID(nsIJARChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(this, verb, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(this, uri); 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 ff61cdaffbf..24b2be41784 100644 --- a/mozilla/netwerk/protocol/keyword/src/nsKeywordProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/keyword/src/nsKeywordProtocolHandler.cpp @@ -155,14 +155,7 @@ nsKeywordProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsKeywordProtocolHandler::NewChannel(const char* verb, nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* aOriginalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsKeywordProtocolHandler::NewChannel(nsIURI* uri, nsIChannel* *result) { nsresult rv; @@ -179,9 +172,7 @@ nsKeywordProtocolHandler::NewChannel(const char* verb, nsIURI* uri, if (NS_FAILED(rv)) return rv; // now we have an HTTP url, give the user an HTTP channel - rv = serv->NewChannel(verb, httpSpec, nsnull, aLoadGroup, notificationCallbacks, - loadAttributes, aOriginalURI, - bufferSegmentSize, bufferMaxSize, result); + rv = serv->NewChannel(httpSpec, nsnull, result); nsAllocator::Free(httpSpec); return rv; diff --git a/mozilla/netwerk/protocol/makefile.win b/mozilla/netwerk/protocol/makefile.win index 8f45a4cc975..7dbcb95aa88 100644 --- a/mozilla/netwerk/protocol/makefile.win +++ b/mozilla/netwerk/protocol/makefile.win @@ -26,7 +26,6 @@ MODULE = necko DIRS= \ about \ file \ - resource \ ftp \ data \ http \ diff --git a/mozilla/netwerk/protocol/res/src/nsResChannel.cpp b/mozilla/netwerk/protocol/res/src/nsResChannel.cpp index d41a1842e2a..c9f1c0e9bca 100644 --- a/mozilla/netwerk/protocol/res/src/nsResChannel.cpp +++ b/mozilla/netwerk/protocol/res/src/nsResChannel.cpp @@ -29,65 +29,65 @@ #include "nsIComponentManager.h" #include "nsIURL.h" #include "nsIIOService.h" +#include "nsXPIDLString.h" static NS_DEFINE_CID(kFileTransportServiceCID, NS_FILETRANSPORTSERVICE_CID); static NS_DEFINE_CID(kMIMEServiceCID, NS_MIMESERVICE_CID); static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); +#if defined(PR_LOGGING) +// +// Log module for nsResChannel logging... +// +// To enable logging (see prlog.h for full details): +// +// set NSPR_LOG_MODULES=nsResChannel:5 +// set NSPR_LOG_FILE=nspr.log +// +// this enables PR_LOG_DEBUG level information and places all output in +// the file nspr.log +PRLogModuleInfo* gResChannelLog = nsnull; + +#endif /* PR_LOGGING */ + //////////////////////////////////////////////////////////////////////////////// nsResChannel::nsResChannel() : mLoadAttributes(LOAD_NORMAL), - mLock(nsnull), - mState(QUIESCENT) +#ifdef DEBUG + mInitiator(nsnull), +#endif + mState(QUIESCENT), + mStartPosition(0), + mCount(-1), + mBufferSegmentSize(0), + mBufferMaxSize(0), + mStatus(NS_OK) { NS_INIT_REFCNT(); +#if defined(PR_LOGGING) + // + // Initialize the global PRLogModule for socket transport logging + // if necessary... + // + if (nsnull == gResChannelLog) { + gResChannelLog = PR_NewLogModule("nsResChannel"); + } +#endif /* PR_LOGGING */ } nsresult -nsResChannel::Init(nsIResProtocolHandler* handler, - const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize) +nsResChannel::Init(nsIResProtocolHandler* handler, nsIURI* uri) { - nsresult rv; - - mLock = PR_NewLock(); - if (mLock == nsnull) - return NS_ERROR_OUT_OF_MEMORY; - - mBufferSegmentSize = bufferSegmentSize; - mBufferMaxSize = bufferMaxSize; mResolvedURI = uri; mHandler = handler; - mOriginalURI = originalURI ? originalURI : uri; mResourceURI = uri; - mCommand = nsCRT::strdup(command); - if (mCommand == nsnull) - return NS_ERROR_OUT_OF_MEMORY; - - rv = SetLoadAttributes(loadAttributes); - if (NS_FAILED(rv)) return rv; - - rv = SetLoadGroup(aLoadGroup); - if (NS_FAILED(rv)) return rv; - - rv = SetNotificationCallbacks(notificationCallbacks); - if (NS_FAILED(rv)) return rv; - - return rv; + return NS_OK; } nsResChannel::~nsResChannel() { - if (mCommand) nsCRT::free(mCommand); - if (mLock) PR_DestroyLock(mLock); } NS_IMPL_ISUPPORTS5(nsResChannel, @@ -173,8 +173,6 @@ nsResChannel::Substitutions::Next(nsIURI* *result) NS_IMETHODIMP nsResChannel::IsPending(PRBool *result) { - nsAutoLock lock(mLock); - if (mResolvedChannel) return mResolvedChannel->IsPending(result); *result = PR_FALSE; @@ -182,21 +180,35 @@ nsResChannel::IsPending(PRBool *result) } NS_IMETHODIMP -nsResChannel::Cancel() +nsResChannel::GetStatus(nsresult *status) { - nsAutoLock lock(mLock); - - mResolvedURI = mResourceURI; // remove the resolution - if (mResolvedChannel) - return mResolvedChannel->Cancel(); + *status = mStatus; return NS_OK; } +NS_IMETHODIMP +nsResChannel::Cancel(nsresult status) +{ +#ifdef DEBUG + NS_ASSERTION(mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); +#endif + nsresult rv = NS_OK; + if (mResolvedChannel) { + rv = mResolvedChannel->Cancel(status); + } + mStatus = status; + mResolvedURI = mResourceURI; // remove the resolution + return rv; +} + NS_IMETHODIMP nsResChannel::Suspend() { - nsAutoLock lock(mLock); - +#ifdef DEBUG + NS_ASSERTION(mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); +#endif if (mResolvedChannel) return mResolvedChannel->Suspend(); return NS_OK; @@ -205,8 +217,10 @@ nsResChannel::Suspend() NS_IMETHODIMP nsResChannel::Resume() { - nsAutoLock lock(mLock); - +#ifdef DEBUG + NS_ASSERTION(mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); +#endif if (mResolvedChannel) return mResolvedChannel->Resume(); return NS_OK; @@ -217,15 +231,22 @@ nsResChannel::Resume() //////////////////////////////////////////////////////////////////////////////// NS_IMETHODIMP -nsResChannel::GetOriginalURI(nsIURI * *aURI) +nsResChannel::GetOriginalURI(nsIURI* *aURI) { - *aURI = mOriginalURI; + *aURI = mOriginalURI ? mOriginalURI : mResourceURI; NS_ADDREF(*aURI); return NS_OK; } NS_IMETHODIMP -nsResChannel::GetURI(nsIURI * *aURI) +nsResChannel::SetOriginalURI(nsIURI* aURI) +{ + mOriginalURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsResChannel::GetURI(nsIURI* *aURI) { if (mResolvedURI == nsnull) mResolvedURI = mResourceURI; @@ -235,65 +256,118 @@ nsResChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsResChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, - nsIInputStream **result) +nsResChannel::SetURI(nsIURI* aURI) +{ + return NS_ERROR_FAILURE; +} + +nsresult +nsResChannel::EnsureNextResolvedChannel() { nsresult rv; - nsAutoLock lock(mLock); + NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); + if (NS_FAILED(rv)) goto done; + + rv = mSubstitutions.Next(getter_AddRefs(mResolvedURI)); + if (NS_FAILED(rv)) goto done; + + rv = serv->NewChannelFromURI(mResolvedURI, + getter_AddRefs(mResolvedChannel)); + if (NS_FAILED(rv)) { + rv = NS_OK; // returning NS_OK lets us try again + goto done; + } + + if (mOriginalURI) { + rv = mResolvedChannel->SetOriginalURI(mOriginalURI); + if (NS_FAILED(rv)) goto done; + } + if (mLoadGroup) { + rv = mResolvedChannel->SetLoadGroup(mLoadGroup); + if (NS_FAILED(rv)) goto done; + } + if (mLoadAttributes != LOAD_NORMAL) { + rv = mResolvedChannel->SetLoadAttributes(mLoadAttributes); + if (NS_FAILED(rv)) goto done; + } + if (mBufferSegmentSize) { + rv = mResolvedChannel->SetBufferSegmentSize(mBufferSegmentSize); + if (NS_FAILED(rv)) goto done; + } + if (mBufferMaxSize) { + rv = mResolvedChannel->SetBufferMaxSize(mBufferMaxSize); + if (NS_FAILED(rv)) goto done; + } + if (mCallbacks) { + rv = mResolvedChannel->SetNotificationCallbacks(mCallbacks); + if (NS_FAILED(rv)) goto done; + } + if (mStartPosition) { + rv = mResolvedChannel->SetTransferOffset(mStartPosition); + if (NS_FAILED(rv)) goto done; + } + if (mCount >= 0) { + rv = mResolvedChannel->SetTransferCount(mCount); + if (NS_FAILED(rv)) goto done; + } + + done: +#if defined(PR_LOGGING) + nsXPIDLCString resURI; + (void)mResourceURI->GetSpec(getter_Copies(resURI)); + nsXPIDLCString newURI; + if (mResolvedURI) + (void)mResolvedURI->GetSpec(getter_Copies(newURI)); + PR_LOG(gResChannelLog, PR_LOG_DEBUG, + ("nsResChannel: resolving %s ", + (const char*)resURI)); + PR_LOG(gResChannelLog, PR_LOG_DEBUG, + (" to %s => status %x\n", + (const char*)newURI, rv)); +#endif /* PR_LOGGING */ + return rv; +} + +NS_IMETHODIMP +nsResChannel::OpenInputStream(nsIInputStream **result) +{ + nsresult rv; if (mResolvedChannel) return NS_ERROR_IN_PROGRESS; - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - rv = mSubstitutions.Init(); if (NS_FAILED(rv)) return rv; do { - rv = mSubstitutions.Next(getter_AddRefs(mResolvedURI)); - if (NS_FAILED(rv)) return rv; + rv = EnsureNextResolvedChannel(); + if (NS_FAILED(rv)) break; - rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, - mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mResolvedChannel)); - if (NS_FAILED(rv)) continue; - - rv = mResolvedChannel->OpenInputStream(startPosition, readCount, result); + if (mResolvedChannel) + rv = mResolvedChannel->OpenInputStream(result); } while (NS_FAILED(rv)); return rv; } NS_IMETHODIMP -nsResChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **result) +nsResChannel::OpenOutputStream(nsIOutputStream **result) { nsresult rv; - nsAutoLock lock(mLock); - if (mResolvedChannel) return NS_ERROR_IN_PROGRESS; - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - rv = mSubstitutions.Init(); if (NS_FAILED(rv)) return rv; do { - rv = mSubstitutions.Next(getter_AddRefs(mResolvedURI)); - if (NS_FAILED(rv)) return rv; + rv = EnsureNextResolvedChannel(); + if (NS_FAILED(rv)) break; - rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, - mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mResolvedChannel)); - if (NS_FAILED(rv)) continue; - - rv = mResolvedChannel->OpenOutputStream(startPosition, result); + if (mResolvedChannel) + rv = mResolvedChannel->OpenOutputStream(result); } while (NS_FAILED(rv)); return rv; @@ -304,7 +378,11 @@ nsResChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) { nsresult rv; - nsAutoLock lock(mLock); +#ifdef DEBUG + NS_ASSERTION(mInitiator == nsnull || mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); + mInitiator = PR_CurrentThread(); +#endif switch (mState) { case QUIESCENT: @@ -327,39 +405,33 @@ nsResChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) mUserObserver = observer; mUserContext = ctxt; - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - do { - rv = mSubstitutions.Next(getter_AddRefs(mResolvedURI)); + rv = EnsureNextResolvedChannel(); if (NS_FAILED(rv)) break; - rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, - mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mResolvedChannel)); - if (NS_FAILED(rv)) continue; - - rv = mResolvedChannel->AsyncOpen(this, nsnull); + if (mResolvedChannel) + rv = mResolvedChannel->AsyncOpen(this, nsnull); // Later, this AsyncOpen will call back our OnStopRequest // method. The action resumes there... } while (NS_FAILED(rv)); if (NS_FAILED(rv)) { - (void)observer->OnStopRequest(this, ctxt, rv, nsnull); // XXX need error message + (void)EndRequest(rv, nsnull); // XXX need error message } return rv; } NS_IMETHODIMP -nsResChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, - nsISupports *ctxt, - nsIStreamListener *listener) +nsResChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { nsresult rv; - nsAutoLock lock(mLock); +#ifdef DEBUG + NS_ASSERTION(mInitiator == nsnull || mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); + mInitiator = PR_CurrentThread(); +#endif switch (mState) { case QUIESCENT: @@ -383,31 +455,21 @@ nsResChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, } NS_ASSERTION(mState == ASYNC_READ, "wrong state"); - mStartPosition = startPosition; - mCount = readCount; mUserContext = ctxt; mUserObserver = listener; // cast back to nsIStreamListener later - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - do { - rv = mSubstitutions.Next(getter_AddRefs(mResolvedURI)); + rv = EnsureNextResolvedChannel(); if (NS_FAILED(rv)) break; - rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, - mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mResolvedChannel)); - if (NS_FAILED(rv)) continue; - - rv = mResolvedChannel->AsyncRead(startPosition, readCount, nsnull, this); + if (mResolvedChannel) + rv = mResolvedChannel->AsyncRead(this, nsnull); // Later, this AsyncRead will call back our OnStopRequest // method. The action resumes there... } while (NS_FAILED(rv)); if (NS_FAILED(rv)) { - (void)mUserObserver->OnStopRequest(this, mUserContext, rv, nsnull); // XXX need error message + (void)EndRequest(rv, nsnull); // XXX need error message } return rv; @@ -415,13 +477,16 @@ nsResChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, NS_IMETHODIMP nsResChannel::AsyncWrite(nsIInputStream *fromStream, - PRUint32 startPosition, PRInt32 writeCount, - nsISupports *ctxt, - nsIStreamObserver *observer) + nsIStreamObserver *observer, + nsISupports *ctxt) { nsresult rv; - nsAutoLock lock(mLock); +#ifdef DEBUG + NS_ASSERTION(mInitiator == nsnull || mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); + mInitiator = PR_CurrentThread(); +#endif switch (mState) { case QUIESCENT: @@ -446,32 +511,21 @@ nsResChannel::AsyncWrite(nsIInputStream *fromStream, NS_ASSERTION(mState == ASYNC_READ, "wrong state"); mFromStream = fromStream; - mStartPosition = startPosition; - mCount = writeCount; mUserContext = ctxt; mUserObserver = observer; - NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - do { - rv = mSubstitutions.Next(getter_AddRefs(mResolvedURI)); + rv = EnsureNextResolvedChannel(); if (NS_FAILED(rv)) break; - rv = serv->NewChannelFromURI(mCommand, mResolvedURI, mLoadGroup, mCallbacks, - mLoadAttributes, mOriginalURI, - mBufferSegmentSize, mBufferMaxSize, - getter_AddRefs(mResolvedChannel)); - if (NS_FAILED(rv)) continue; - - rv = mResolvedChannel->AsyncWrite(fromStream, startPosition, writeCount, - nsnull, this); + if (mResolvedChannel) + rv = mResolvedChannel->AsyncWrite(fromStream, this, nsnull); // Later, this AsyncWrite will call back our OnStopRequest // method. The action resumes there... } while (NS_FAILED(rv)); if (NS_FAILED(rv)) { - (void)mUserObserver->OnStopRequest(this, mUserContext, rv, nsnull); // XXX need error message + (void)EndRequest(rv, nsnull); // XXX need error message } return rv; @@ -515,6 +569,90 @@ nsResChannel::GetContentLength(PRInt32 *aContentLength) return NS_ERROR_FAILURE; } +NS_IMETHODIMP +nsResChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsResChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsResChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + *aTransferOffset = mStartPosition; + return NS_OK; +} + +NS_IMETHODIMP +nsResChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + mStartPosition = aTransferOffset; + return NS_OK; +} + +NS_IMETHODIMP +nsResChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + *aTransferCount = mCount; + return NS_OK; +} + +NS_IMETHODIMP +nsResChannel::SetTransferCount(PRInt32 aTransferCount) +{ + mCount = aTransferCount; + return NS_OK; +} + +NS_IMETHODIMP +nsResChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsResChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsResChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsResChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsResChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsResChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsResChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsResChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsResChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsResChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsResChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsResChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) { @@ -526,8 +664,6 @@ nsResChannel::GetLoadGroup(nsILoadGroup* *aLoadGroup) NS_IMETHODIMP nsResChannel::SetLoadGroup(nsILoadGroup* aLoadGroup) { - nsAutoLock lock(mLock); - mLoadGroup = aLoadGroup; return NS_OK; } @@ -550,23 +686,23 @@ nsResChannel::SetOwner(nsISupports* aOwner) NS_IMETHODIMP nsResChannel::GetNotificationCallbacks(nsIInterfaceRequestor* *aNotificationCallbacks) { - *aNotificationCallbacks = mCallbacks.get(); - NS_IF_ADDREF(*aNotificationCallbacks); - return NS_OK; + *aNotificationCallbacks = mCallbacks.get(); + NS_IF_ADDREF(*aNotificationCallbacks); + return NS_OK; } NS_IMETHODIMP nsResChannel::SetNotificationCallbacks(nsIInterfaceRequestor* aNotificationCallbacks) { - mCallbacks = aNotificationCallbacks; - return NS_OK; + mCallbacks = aNotificationCallbacks; + return NS_OK; } NS_IMETHODIMP nsResChannel::GetSecurityInfo(nsISupports * *aSecurityInfo) { - *aSecurityInfo = nsnull; - return NS_OK; + NS_NOTREACHED("nsResChannel::GetSecurityInfo"); + return NS_ERROR_NOT_IMPLEMENTED; } //////////////////////////////////////////////////////////////////////////////// @@ -576,6 +712,10 @@ nsResChannel::GetSecurityInfo(nsISupports * *aSecurityInfo) NS_IMETHODIMP nsResChannel::OnStartRequest(nsIChannel* transportChannel, nsISupports* context) { +#ifdef DEBUG + NS_ASSERTION(mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); +#endif NS_ASSERTION(mUserObserver, "No observer..."); return mUserObserver->OnStartRequest(this, mUserContext); } @@ -584,22 +724,28 @@ NS_IMETHODIMP nsResChannel::OnStopRequest(nsIChannel* transportChannel, nsISupports* context, nsresult aStatus, const PRUnichar* aMsg) { - nsresult rv; - +#ifdef DEBUG + NS_ASSERTION(mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); +#endif if (NS_FAILED(aStatus) && aStatus != NS_BINDING_ABORTED) { // if we failed to process this channel, then try the next one: switch (mState) { case ASYNC_OPEN: return AsyncOpen(mUserObserver, mUserContext); case ASYNC_READ: - return AsyncRead(mStartPosition, mCount, mUserContext, - GetUserListener()); + return AsyncRead(GetUserListener(), mUserContext); case ASYNC_WRITE: - return AsyncWrite(mFromStream, mStartPosition, mCount, - mUserContext, mUserObserver); + return AsyncWrite(mFromStream, mUserObserver, mUserContext); } } + return EndRequest(aStatus, aMsg); +} +nsresult +nsResChannel::EndRequest(nsresult aStatus, const PRUnichar* aMsg) +{ + nsresult rv; rv = mUserObserver->OnStopRequest(this, mUserContext, aStatus, aMsg); #if 0 // we don't add the resource channel to the group (although maybe we should) if (mLoadGroup) { @@ -621,12 +767,12 @@ nsResChannel::OnDataAvailable(nsIChannel* transportChannel, nsISupports* context nsIInputStream *aIStream, PRUint32 aSourceOffset, PRUint32 aLength) { +#ifdef DEBUG + NS_ASSERTION(mInitiator == PR_CurrentThread(), + "wrong thread calling this routine"); +#endif return GetUserListener()->OnDataAvailable(this, mUserContext, aIStream, aSourceOffset, aLength); } //////////////////////////////////////////////////////////////////////////////// -// From nsIResChannel -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/netwerk/protocol/res/src/nsResChannel.h b/mozilla/netwerk/protocol/res/src/nsResChannel.h index 76da3344bd5..66f6cdcf53b 100644 --- a/mozilla/netwerk/protocol/res/src/nsResChannel.h +++ b/mozilla/netwerk/protocol/res/src/nsResChannel.h @@ -32,6 +32,9 @@ #include "nsIInputStream.h" #include "nsCOMPtr.h" #include "nsAutoLock.h" +#ifdef DEBUG +#include "prthread.h" +#endif class nsResChannel : public nsIResChannel, public nsIStreamListener @@ -51,15 +54,7 @@ public: static NS_METHOD Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult); - nsresult Init(nsIResProtocolHandler* handler, - const char* command, - nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize); + nsresult Init(nsIResProtocolHandler* handler, nsIURI* uri); protected: class Substitutions { @@ -99,17 +94,18 @@ protected: return listener; } + nsresult EnsureNextResolvedChannel(); + nsresult EndRequest(nsresult status, const PRUnichar* msg); + protected: nsCOMPtr<nsIURI> mOriginalURI; nsCOMPtr<nsIURI> mResourceURI; nsCOMPtr<nsIURI> mResolvedURI; nsCOMPtr<nsIInterfaceRequestor> mCallbacks; - char* mCommand; PRUint32 mLoadAttributes; nsCOMPtr<nsILoadGroup> mLoadGroup; nsCOMPtr<nsISupports> mOwner; - PRLock* mLock; nsCOMPtr<nsIResProtocolHandler> mHandler; nsCOMPtr<nsIChannel> mResolvedChannel; State mState; @@ -121,6 +117,10 @@ protected: PRInt32 mCount; PRUint32 mBufferSegmentSize; PRUint32 mBufferMaxSize; + nsresult mStatus; +#ifdef DEBUG + PRThread* mInitiator; +#endif }; #endif // nsResChannel_h__ diff --git a/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp b/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp index 58033c1c6a4..be543af5933 100644 --- a/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp +++ b/mozilla/netwerk/protocol/res/src/nsResProtocolHandler.cpp @@ -239,14 +239,7 @@ nsResProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsResProtocolHandler::NewChannel(const char* command, nsIURI* uri, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel* *result) +nsResProtocolHandler::NewChannel(nsIURI* uri, nsIChannel* *result) { nsresult rv; @@ -254,8 +247,7 @@ nsResProtocolHandler::NewChannel(const char* command, nsIURI* uri, rv = nsResChannel::Create(nsnull, NS_GET_IID(nsIResChannel), (void**)&channel); if (NS_FAILED(rv)) return rv; - rv = channel->Init(this, command, uri, aLoadGroup, notificationCallbacks, - loadAttributes, originalURI, bufferSegmentSize, bufferMaxSize); + rv = channel->Init(this, uri); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff --git a/mozilla/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp b/mozilla/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp index 27b182f2a8e..a73d7cd595b 100644 --- a/mozilla/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp +++ b/mozilla/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp @@ -1058,7 +1058,7 @@ mozTXTToHTMLConv::ScanHTML(nsString& aInString, PRUint32 whattodo, nsString &aOu i = lengthOfInString; nsString tempString; - tempString.SetCapacity((PRUint32(i) - start) * growthRate); + tempString.SetCapacity(PRUint32((PRUint32(i) - start) * growthRate)); UnescapeStr(aInString.GetUnicode(), start, PRUint32(i) - start, tempString); ScanTXT(tempString.GetUnicode(), tempString.Length(), whattodo, aOutString); @@ -1144,7 +1144,7 @@ mozTXTToHTMLConv::ScanTXT(const PRUnichar *text, PRUint32 whattodo, return NS_OK; } - outString.SetCapacity(inLength * growthRate); + outString.SetCapacity(PRUint32(inLength * growthRate)); ScanTXT(text, inLength, whattodo, outString); *_retval = outString.ToNewUnicode(); @@ -1160,7 +1160,7 @@ mozTXTToHTMLConv::ScanHTML(const PRUnichar *text, PRUint32 whattodo, // FIX ME!!! nsString outString; nsString inString (text); // look at this nasty extra copy of the entire input buffer! - outString.SetCapacity(inString.Length() * growthRate); + outString.SetCapacity(PRUint32(inString.Length() * growthRate)); ScanHTML(inString, whattodo, outString); *_retval = outString.ToNewUnicode(); diff --git a/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp b/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp index 4f9f74dc53b..dcf023448f4 100644 --- a/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp +++ b/mozilla/netwerk/streamconv/converters/nsFTPDirListingConv.cpp @@ -228,14 +228,11 @@ nsFTPDirListingConv::AsyncConvertData(const PRUnichar *aFromType, const PRUnicha rv = aCtxt->QueryInterface(NS_GET_IID(nsIURI), (void**)&uri); if (NS_FAILED(rv)) return rv; - rv = NS_NewInputStreamChannel(uri, "application/http-index-format", -1, // XXX fix contentLength - nsnull, // inStr - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - &mPartChannel); + rv = NS_NewInputStreamChannel(&mPartChannel, + uri, + nsnull, + "application/http-index-format", + -1); // XXX fix contentLength 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 b7a9de47ef0..684f3abbcd0 100644 --- a/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp +++ b/mozilla/netwerk/streamconv/converters/nsMultiMixedConv.cpp @@ -265,27 +265,25 @@ nsMultiMixedConv::OnDataAvailable(nsIChannel *channel, nsISupports *context, if (mContentType.Length() < 1) mContentType = "text/html"; // default to text/html, that's all we'll ever see anyway - rv = NS_NewInputStreamChannel(partURI, mContentType.GetBuffer(), mContentLength, - nsnull, // inStr - loadGroup, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(mPartChannel)); - if (NS_FAILED(rv)) { - nsAllocator::Free(buffer); - return rv; - } + rv = NS_NewInputStreamChannel(getter_AddRefs(mPartChannel), + partURI, + nsnull, // inStr + mContentType.GetBuffer(), + mContentLength); + if (NS_FAILED(rv)) goto error; // Add the new channel to the load group (if any) if (loadGroup) { - loadGroup->AddChannel(mPartChannel, nsnull); + rv = mPartChannel->SetLoadGroup(loadGroup); + if (NS_FAILED(rv)) goto error; + rv = loadGroup->AddChannel(mPartChannel, nsnull); + if (NS_FAILED(rv)) goto error; } // Let's start off the load. NOTE: we don't forward on the channel passed // into our OnDataAvailable() as it's the root channel for the raw stream. rv = mFinalListener->OnStartRequest(mPartChannel, context); + error: if (NS_FAILED(rv)) { nsAllocator::Free(buffer); return rv; diff --git a/mozilla/netwerk/streamconv/test/TestStreamConv.cpp b/mozilla/netwerk/streamconv/test/TestStreamConv.cpp index accc952179d..e8d32cf97c6 100644 --- a/mozilla/netwerk/streamconv/test/TestStreamConv.cpp +++ b/mozilla/netwerk/streamconv/test/TestStreamConv.cpp @@ -284,15 +284,11 @@ main(int argc, char* argv[]) nsCOMPtr<nsIURI> dummyURI; rv = serv->NewURI("http://neverneverland.com", nsnull, getter_AddRefs(dummyURI)); if (NS_FAILED(rv)) return rv; - rv = NS_NewInputStreamChannel(dummyURI, "multipart/x-mixed-replacE;boundary=thisrandomstring", - -1, // XXX fix contentLength - nsnull, // inStr - nsnull, // loadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(dummyChannel)); + rv = NS_NewInputStreamChannel(getter_AddRefs(dummyChannel), + dummyURI, + nsnull, // inStr + "multipart/x-mixed-replacE;boundary=thisrandomstring", + -1); // XXX fix contentLength if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/test/TestCacheMgr.cpp b/mozilla/netwerk/test/TestCacheMgr.cpp index 4761acdc712..0c56f44264e 100644 --- a/mozilla/netwerk/test/TestCacheMgr.cpp +++ b/mozilla/netwerk/test/TestCacheMgr.cpp @@ -299,7 +299,7 @@ TestReadStream(nsICachedNetData *cacheEntry, nsITestDataStream *testDataStream, rv = reader->Init(testDataStream, expectedStreamLength); NS_ASSERTION(NS_SUCCEEDED(rv), " "); - rv = channel->AsyncRead(0, -1, 0, reader); + rv = channel->AsyncRead(0, reader); NS_ASSERTION(NS_SUCCEEDED(rv), " "); reader->Release(); @@ -495,7 +495,7 @@ FillCache(nsINetDataCacheManager *aCache, PRUint32 aFlags, PRUint32 aCacheCapaci rv = cacheEntry->GetCache(getter_AddRefs(containingCache)); NS_ASSERTION(NS_SUCCEEDED(rv), " "); - rv = channel->OpenOutputStream(0, getter_AddRefs(outStream)); + rv = channel->OpenOutputStream(getter_AddRefs(outStream)); NS_ASSERTION(NS_SUCCEEDED(rv), " "); int streamLength = randomStream->Next() % MAX_CONTENT_LENGTH; diff --git a/mozilla/netwerk/test/TestFileInput.cpp b/mozilla/netwerk/test/TestFileInput.cpp index 8c4801a2c94..9a7fdc9616f 100644 --- a/mozilla/netwerk/test/TestFileInput.cpp +++ b/mozilla/netwerk/test/TestFileInput.cpp @@ -214,7 +214,7 @@ Simulated_nsFileTransport_Run(nsReader* reader, const char* path) rv = NS_NewLocalFile(path, getter_AddRefs(file)); if (NS_FAILED(rv)) goto done; - rv = NS_NewFileInputStream(file, getter_AddRefs(fileStr)); + rv = NS_NewLocalFileInputStream(getter_AddRefs(fileStr), file); if (NS_FAILED(rv)) goto done; rv = NS_NewPipe(&bufStr, getter_AddRefs(out), nsnull, @@ -350,10 +350,10 @@ ParallelReadTest(char* dirName, nsIFileTransportService* fts) NS_ASSERTION(listener, "QI failed"); nsIChannel* trans; - rv = fts->CreateTransport(file, PR_RDONLY, "load", 0, 0, &trans); + rv = fts->CreateTransport(file, PR_RDONLY, 0, &trans); NS_ASSERTION(NS_SUCCEEDED(rv), "create failed"); - rv = trans->AsyncRead(0, -1, nsnull, listener); + rv = trans->AsyncRead(nsnull, listener); NS_ASSERTION(NS_SUCCEEDED(rv), "AsyncRead failed"); // the reader thread will hang on to these objects until it quits diff --git a/mozilla/netwerk/test/TestFileInput2.cpp b/mozilla/netwerk/test/TestFileInput2.cpp index 48dbd13830d..7dd79732d5d 100644 --- a/mozilla/netwerk/test/TestFileInput2.cpp +++ b/mozilla/netwerk/test/TestFileInput2.cpp @@ -156,21 +156,21 @@ public: // Open the input stream: nsCOMPtr<nsIInputStream> fileIn; - rv = NS_NewFileInputStream(mInPath, getter_AddRefs(fileIn)); + rv = NS_NewLocalFileInputStream(getter_AddRefs(fileIn), mInPath); if (NS_FAILED(rv)) return rv; - rv = NS_NewBufferedInputStream(fileIn, 65535, getter_AddRefs(inStr)); + rv = NS_NewBufferedInputStream(getter_AddRefs(inStr), fileIn, 65535); if (NS_FAILED(rv)) return rv; // Open the output stream: nsCOMPtr<nsIOutputStream> fileOut; - rv = NS_NewFileOutputStream(mOutPath, - PR_CREATE_FILE | PR_WRONLY | PR_TRUNCATE, - 0664, - getter_AddRefs(fileOut)); + rv = NS_NewLocalFileOutputStream(getter_AddRefs(fileOut), + mOutPath, + PR_CREATE_FILE | PR_WRONLY | PR_TRUNCATE, + 0664); if (NS_FAILED(rv)) return rv; - rv = NS_NewBufferedOutputStream(fileOut, 65535, getter_AddRefs(outStr)); + rv = NS_NewBufferedOutputStream(getter_AddRefs(outStr), fileOut, 65535); if (NS_FAILED(rv)) return rv; // Copy from one to the other @@ -254,36 +254,16 @@ public: nsCOMPtr<nsIInputStream> inStr; nsCOMPtr<nsIOutputStream> outStr; - rv = NS_NewFileChannel(mInPath, - PR_RDONLY, - nsnull, // contentType - 0, // contentLength, - nsnull, // aLoadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, // bufferSegmentSize - 0, // bufferMaxSize - getter_AddRefs(inCh)); + rv = NS_NewLocalFileChannel(getter_AddRefs(inCh), mInPath); if (NS_FAILED(rv)) return rv; - rv = inCh->OpenInputStream(0, -1, getter_AddRefs(inStr)); + rv = inCh->OpenInputStream(getter_AddRefs(inStr)); if (NS_FAILED(rv)) return rv; - rv = NS_NewFileChannel(mOutPath, - PR_RDWR, - nsnull, // contentType - 0, // contentLength, - nsnull, // aLoadGroup - nsnull, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, // bufferSegmentSize - 0, // bufferMaxSize - getter_AddRefs(outCh)); + rv = NS_NewLocalFileChannel(getter_AddRefs(outCh), mOutPath); if (NS_FAILED(rv)) return rv; - rv = outCh->OpenOutputStream(0, getter_AddRefs(outStr)); + rv = outCh->OpenOutputStream(getter_AddRefs(outStr)); if (NS_FAILED(rv)) return rv; // Copy from one to the other diff --git a/mozilla/netwerk/test/TestFileTransport.cpp b/mozilla/netwerk/test/TestFileTransport.cpp index 27f8cc60605..43f1e2854d8 100644 --- a/mozilla/netwerk/test/TestFileTransport.cpp +++ b/mozilla/netwerk/test/TestFileTransport.cpp @@ -96,10 +96,10 @@ public: spec.SetLeafName(str); nsCOMPtr<nsILocalFile> file; rv = NS_NewLocalFile(spec, getter_AddRefs(file)); - rv = NS_NewFileOutputStream(file, - PR_CREATE_FILE | PR_WRONLY | PR_TRUNCATE, - 0664, - getter_AddRefs(mOut)); + rv = NS_NewLocalFileOutputStream(getter_AddRefs(mOut), + file, + PR_CREATE_FILE | PR_WRONLY | PR_TRUNCATE, + 0664); return rv; } @@ -131,7 +131,7 @@ TestAsyncRead(const char* fileName, PRUint32 offset, PRInt32 length) nsCOMPtr<nsILocalFile> file; rv = NS_NewLocalFile(fs, getter_AddRefs(file)); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransport(file, PR_RDONLY, "load", 0, 0, &fileTrans); + rv = fts->CreateTransport(file, PR_RDONLY, 0, &fileTrans); if (NS_FAILED(rv)) return rv; MyListener* listener = new MyListener(); @@ -142,7 +142,11 @@ TestAsyncRead(const char* fileName, PRUint32 offset, PRInt32 length) if (NS_FAILED(rv)) return rv; gDone = PR_FALSE; - rv = fileTrans->AsyncRead(offset, length, nsnull, listener); + rv = fileTrans->SetTransferOffset(offset); + if (NS_FAILED(rv)) return rv; + rv = fileTrans->SetTransferCount(length); + if (NS_FAILED(rv)) return rv; + rv = fileTrans->AsyncRead(nsnull, listener); if (NS_FAILED(rv)) return rv; while (!gDone) { @@ -177,7 +181,7 @@ TestAsyncWrite(const char* fileName, PRUint32 offset, PRInt32 length) if (NS_FAILED(rv)) return rv; rv = fts->CreateTransport(file, PR_CREATE_FILE | PR_WRONLY | PR_TRUNCATE, - "load", 0, 0, &fileTrans); + 0664, &fileTrans); if (NS_FAILED(rv)) return rv; MyListener* listener = new MyListener(); @@ -192,11 +196,15 @@ TestAsyncWrite(const char* fileName, PRUint32 offset, PRInt32 length) rv = NS_NewLocalFile(spec, getter_AddRefs(f)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIInputStream> inStr; - rv = NS_NewFileInputStream(f, getter_AddRefs(inStr)); + rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), f); if (NS_FAILED(rv)) return rv; gDone = PR_FALSE; - rv = fileTrans->AsyncWrite(inStr, offset, length, nsnull, listener); + rv = fileTrans->SetTransferOffset(offset); + if (NS_FAILED(rv)) return rv; + rv = fileTrans->SetTransferCount(length); + if (NS_FAILED(rv)) return rv; + rv = fileTrans->AsyncWrite(inStr, nsnull, listener); if (NS_FAILED(rv)) return rv; while (!gDone) { @@ -258,7 +266,7 @@ TestAsyncOpen(const char* fileName, PRUint32 offset, PRInt32 length) nsCOMPtr<nsILocalFile> file; rv = NS_NewLocalFile(fs, getter_AddRefs(file)); if (NS_FAILED(rv)) return rv; - rv = fts->CreateTransport(file, PR_RDONLY, "load", 0, 0, &fileTrans); + rv = fts->CreateTransport(file, PR_RDONLY, 0, &fileTrans); if (NS_FAILED(rv)) return rv; MyListener* listener = new MyListener(1); @@ -277,7 +285,11 @@ TestAsyncOpen(const char* fileName, PRUint32 offset, PRInt32 length) rv = fileTrans->AsyncOpen(openObserver, nsnull); if (NS_FAILED(rv)) return rv; - rv = fileTrans->AsyncRead(offset + 10, length, nsnull, listener); + rv = fileTrans->SetTransferOffset(offset + 10); + if (NS_FAILED(rv)) return rv; + rv = fileTrans->SetTransferCount(length); + if (NS_FAILED(rv)) return rv; + rv = fileTrans->AsyncRead(nsnull, listener); if (NS_FAILED(rv)) return rv; #if 0 rv = fileTrans->AsyncRead(offset, length, nsnull, listener); diff --git a/mozilla/netwerk/test/TestProtocols.cpp b/mozilla/netwerk/test/TestProtocols.cpp index 0e703573037..fb12dab90c6 100644 --- a/mozilla/netwerk/test/TestProtocols.cpp +++ b/mozilla/netwerk/test/TestProtocols.cpp @@ -52,7 +52,7 @@ #include "nsISimpleEnumerator.h" #include "nsIHTTPHeader.h" #include "nsXPIDLString.h" - +#include "nsNetUtil.h" // this test app handles cookies. #include "nsICookieService.h" @@ -496,16 +496,12 @@ nsresult StartLoadingURL(const char* aUrlString) NS_ADDREF(callbacks); // Async reading thru the calls of the event sink interface - rv = pService->NewChannelFromURI("load", pURL, - nsnull, // loadGroup - callbacks, // notificationCallbacks - nsIChannel::LOAD_NORMAL, - nsnull, // originalURI - 0, 0, - getter_AddRefs(pChannel)); + rv = NS_OpenURI(getter_AddRefs(pChannel), pURL, pService, + nsnull, // loadGroup + callbacks); // notificationCallbacks NS_RELEASE(callbacks); if (NS_FAILED(rv)) { - printf("ERROR: NewChannelFromURI failed for %s\n", aUrlString); + printf("ERROR: NS_OpenURI failed for %s\n", aUrlString); return rv; } @@ -555,10 +551,9 @@ nsresult StartLoadingURL(const char* aUrlString) } - rv = pChannel->AsyncRead(0, // staring position - -1, // number of bytes to read - info, // ISupports context - listener); // IStreamListener consumer + rv = pChannel->AsyncRead(listener, // IStreamListener consumer + info); // ISupports context + if (NS_SUCCEEDED(rv)) { gKeepRunning += 1; } diff --git a/mozilla/netwerk/test/TestRawCache.cpp b/mozilla/netwerk/test/TestRawCache.cpp index 2afa7a338ec..1a1b0787474 100644 --- a/mozilla/netwerk/test/TestRawCache.cpp +++ b/mozilla/netwerk/test/TestRawCache.cpp @@ -306,7 +306,7 @@ TestReadStream(nsINetDataCacheRecord *record, nsITestDataStream *testDataStream, rv = reader->Init(testDataStream, expectedStreamLength); NS_ASSERTION(NS_SUCCEEDED(rv), " "); - rv = channel->AsyncRead(0, -1, 0, reader); + rv = channel->AsyncRead(0, reader); NS_ASSERTION(NS_SUCCEEDED(rv), " "); reader->Release(); @@ -548,8 +548,10 @@ TestOffsetWrites(nsINetDataCache *cache) NS_ASSERTION(NS_SUCCEEDED(rv), " "); startingOffset = streamLength ? streamLength - (randomStream->Next() % sizeof buf): 0; - rv = channel->OpenOutputStream(startingOffset, getter_AddRefs(outStream)); - NS_ASSERTION(NS_SUCCEEDED(rv), " "); + rv = channel->SetTransferOffset(startingOffset); + NS_ASSERTION(NS_SUCCEEDED(rv), "SetTransferOffset failed"); + rv = channel->OpenOutputStream(getter_AddRefs(outStream)); + NS_ASSERTION(NS_SUCCEEDED(rv), "OpenOutputStream failed"); counterStream = new CounterStream(startingOffset); counterStream->Read(buf, sizeof buf); @@ -630,7 +632,7 @@ FillCache(nsINetDataCache *cache) rv = record->NewChannel(0, getter_AddRefs(channel)); NS_ASSERTION(NS_SUCCEEDED(rv), " "); - rv = channel->OpenOutputStream(0, getter_AddRefs(outStream)); + rv = channel->OpenOutputStream(getter_AddRefs(outStream)); NS_ASSERTION(NS_SUCCEEDED(rv), " "); PRUint32 beforeOccupancy; diff --git a/mozilla/netwerk/test/TestRes.cpp b/mozilla/netwerk/test/TestRes.cpp index 036f629850b..00bda4edcec 100644 --- a/mozilla/netwerk/test/TestRes.cpp +++ b/mozilla/netwerk/test/TestRes.cpp @@ -69,12 +69,13 @@ TestOpenInputStream(const char* url) if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIChannel> channel; - rv = serv->NewChannel("load", url, nsnull, nsnull, nsnull, 0, nsnull, - 0, 0, getter_AddRefs(channel)); + rv = serv->NewChannel(url, + nsnull, // base uri + getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIInputStream> in; - rv = channel->OpenInputStream(0, -1, getter_AddRefs(in)); + rv = channel->OpenInputStream(getter_AddRefs(in)); if (NS_FAILED(rv)) { fprintf(stdout, "failed to OpenInputStream for %s\n", url); return NS_OK; @@ -195,15 +196,16 @@ TestAsyncRead(const char* url) if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIChannel> channel; - rv = serv->NewChannel("load", url, nsnull, nsnull, nsnull, 0, nsnull, - 0, 0, getter_AddRefs(channel)); + rv = serv->NewChannel(url, + nsnull, // base uri + getter_AddRefs(channel)); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIStreamListener> listener = new Listener(); if (listener == nsnull) return NS_ERROR_OUT_OF_MEMORY; - rv = channel->AsyncRead(0, -1, nsnull, listener); + rv = channel->AsyncRead(nsnull, listener); if (NS_FAILED(rv)) return rv; while (!gDone) { diff --git a/mozilla/netwerk/test/TestSocketIO.cpp b/mozilla/netwerk/test/TestSocketIO.cpp index 691f7f832e9..f882db18da9 100644 --- a/mozilla/netwerk/test/TestSocketIO.cpp +++ b/mozilla/netwerk/test/TestSocketIO.cpp @@ -175,7 +175,7 @@ TestWriteObserver::OnStopRequest(nsIChannel* channel, nsISupports* context, printf("\n+++ TestWriteObserver::OnStopRequest (status = %x) +++\n", aStatus); if (NS_SUCCEEDED(aStatus)) { - mTransport->AsyncRead(0, -1, nsnull, new InputTestConsumer); + mTransport->AsyncRead(nsnull, new InputTestConsumer); } else { gKeepRunning = 0; } @@ -270,7 +270,10 @@ main(int argc, char* argv[]) TestWriteObserver* observer = new TestWriteObserver(transport); gElapsedTime = PR_Now(); - transport->AsyncWrite(stream, 0, bytesWritten, nsnull, observer); + rv = transport->SetTransferCount(bytesWritten); + if (NS_SUCCEEDED(rv)) { + rv = transport->AsyncWrite(stream, nsnull, observer); + } NS_RELEASE(transport); } diff --git a/mozilla/netwerk/test/TestSocketInput.cpp b/mozilla/netwerk/test/TestSocketInput.cpp index f964d1850ca..ad648755665 100644 --- a/mozilla/netwerk/test/TestSocketInput.cpp +++ b/mozilla/netwerk/test/TestSocketInput.cpp @@ -166,7 +166,7 @@ main(int argc, char* argv[]) rv = sts->CreateTransport(hostName, port, hostName, 0, 0, &transport); if (NS_SUCCEEDED(rv)) { - transport->AsyncRead(0, -1, nsnull, new InputTestConsumer); + transport->AsyncRead(nsnull, new InputTestConsumer); NS_RELEASE(transport); } diff --git a/mozilla/netwerk/test/TestSocketTransport.cpp b/mozilla/netwerk/test/TestSocketTransport.cpp index cfc4d66e6a2..d918f9c86b8 100644 --- a/mozilla/netwerk/test/TestSocketTransport.cpp +++ b/mozilla/netwerk/test/TestSocketTransport.cpp @@ -352,8 +352,8 @@ TestConnection::TestConnection(const char* aHostName, PRInt32 aPort, } // Synchronous transport... else { - rv = mTransport->OpenInputStream(0, -1, &mInStream); - rv = mTransport->OpenOutputStream(0, &mOutStream); + rv = mTransport->OpenInputStream(&mInStream); + rv = mTransport->OpenOutputStream(&mOutStream); } } } @@ -419,7 +419,7 @@ TestConnection::Run(void) // // Initiate an async read... // - rv = mTransport->AsyncRead(0, -1, mTransport, this); + rv = mTransport->AsyncRead(this, mTransport); if (NS_FAILED(rv)) { printf("Error: AsyncRead failed..."); @@ -488,8 +488,10 @@ nsresult TestConnection::WriteBuffer(void) // Write the buffer to the server... if (NS_SUCCEEDED(rv)) { - rv = mTransport->AsyncWrite(mStream, 0, bytesWritten, mTransport, - /* mOutputObserver */ nsnull); + rv = mTransport->SetTransferCount(bytesWritten); + if (NS_SUCCEEDED(rv)) { + rv = mTransport->AsyncWrite(mStream, /* mOutputObserver */ nsnull, mTransport); + } } // Wait for the write to complete... if (NS_FAILED(rv)) { diff --git a/mozilla/netwerk/test/TestWriteStream.cpp b/mozilla/netwerk/test/TestWriteStream.cpp index 432d2698392..e499196b2ca 100644 --- a/mozilla/netwerk/test/TestWriteStream.cpp +++ b/mozilla/netwerk/test/TestWriteStream.cpp @@ -115,10 +115,13 @@ TestSyncWrite(char* filename, PRUint32 startPosition, PRInt32 length) if (NS_FAILED(rv)) return rv ; nsCOMPtr<nsIChannel> transport; - rv = fts->CreateTransport(fs, PR_RDWR, "load", 0, 0, getter_AddRefs(transport)) ; + rv = fts->CreateTransport(fs, PR_RDWR | PR_CREATE_FILE, 0664, + getter_AddRefs(transport)) ; if (NS_FAILED(rv)) return rv ; - rv = transport->OpenOutputStream(startPosition, getter_AddRefs(outStream)) ; + rv = transport->SetTransferOffset(startPosition); + if (NS_FAILED(rv)) return rv; + rv = transport->OpenOutputStream(getter_AddRefs(outStream)) ; if (NS_FAILED(rv)) return rv; PRIntervalTime startTime = PR_IntervalNow(); diff --git a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp index 6469b7d3ebd..8f0918da293 100644 --- a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp +++ b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp @@ -234,9 +234,9 @@ void nsExpatTokenizer::GetLine(const char* aSourceBuffer, PRUint32 aLength, { /* Figure out the line inside aSourceBuffer that contains character specified by aOffset. Copy it into aLine. */ - PR_ASSERT(aOffset > 0 && aOffset < aLength); + NS_ASSERTION(aOffset > 0 && aOffset < aLength, "?"); /* Assert that the byteIndex and the length of the buffer is even */ - PR_ASSERT(aOffset % 2 == 0 && aLength % 2 == 0); + NS_ASSERTION(aOffset % 2 == 0 && aLength % 2 == 0, "?"); PRUnichar* start = (PRUnichar* ) &aSourceBuffer[aOffset]; /* Will try to find the start of the line */ PRUnichar* end = (PRUnichar* ) &aSourceBuffer[aOffset]; /* Will try to find the end of the line */ PRUint32 startIndex = aOffset / sizeof(PRUnichar); /* Track the position of the 'start' pointer into the buffer */ @@ -269,7 +269,7 @@ void nsExpatTokenizer::GetLine(const char* aSourceBuffer, PRUint32 aLength, aLine.Append(""); } else { - PR_ASSERT(endIndex - startIndex >= sizeof(PRUnichar)); + NS_ASSERTION(endIndex - startIndex >= sizeof(PRUnichar), "?"); /* At this point, there are two cases. Either the error is on the first line or on subsequent lines. If the error is on the first line, startIndex will decrement all the way to zero. If not, startIndex will decrement to the position of the @@ -320,7 +320,7 @@ void nsExpatTokenizer::PushXMLErrorToken(const char *aBuffer, PRUint32 aLength, nsresult nsExpatTokenizer::ParseXMLBuffer(const char* aBuffer, PRUint32 aLength, PRBool aIsFinal) { nsresult result=NS_OK; - PR_ASSERT((aBuffer && aLength) || (aBuffer == nsnull && aLength == 0)); + NS_ASSERTION((aBuffer && aLength) || (aBuffer == nsnull && aLength == 0), "?"); if (mExpatParser) { nsCOMPtr<nsExpatTokenizer> me=this; diff --git a/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp b/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp index ea1d37e24c6..fbd5a5e7b21 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp @@ -441,7 +441,7 @@ void nsHTMLContentSinkStream::WriteAttributes(const nsIParserNode& aNode) if (mURI) { nsAutoString absURI; - if (NS_SUCCEEDED(NS_MakeAbsoluteURI(value, mURI, absURI)) + if (NS_SUCCEEDED(NS_MakeAbsoluteURI(absURI, value, mURI)) && !absURI.IsEmpty()) value = absURI; } diff --git a/mozilla/parser/htmlparser/tests/grabpage/grabpage.cpp b/mozilla/parser/htmlparser/tests/grabpage/grabpage.cpp index b22cc8eca02..4b42cfac0d7 100644 --- a/mozilla/parser/htmlparser/tests/grabpage/grabpage.cpp +++ b/mozilla/parser/htmlparser/tests/grabpage/grabpage.cpp @@ -237,7 +237,7 @@ PageGrabber::Grab(const nsString& aURL) if(copier) { NS_ADDREF(copier); - rv = channel->AsyncRead(0, -1, nsnull, copier); + rv = channel->AsyncRead(copier, nsnull); if (NS_OK != rv) { NS_RELEASE(copier); diff --git a/mozilla/profile/Acct/nsAccount.cpp b/mozilla/profile/Acct/nsAccount.cpp index c0542f81ede..8b422013944 100644 --- a/mozilla/profile/Acct/nsAccount.cpp +++ b/mozilla/profile/Acct/nsAccount.cpp @@ -47,9 +47,7 @@ #include "nsIEventQueueService.h" #include "nsIPersistentProperties.h" #include "nsIServiceManager.h" -#include "nsIURL.h" -#include "nsIIOService.h" -#include "nsIChannel.h" +#include "nsNetUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #include "nsIComponentManager.h" #include "nsIEnumerator.h" @@ -353,10 +351,12 @@ int nsAccount::GetNCIValues(nsString MiddleValue) if (NS_FAILED(ret)) return ret; + nsCOMPtr<nsIURI> uri; + ret = NS_NewURI(getter_AddRefs(uri), Trial, nsnull, service); + if (NS_FAILED(ret)) return ret; + nsIChannel *channel = nsnull; - // XXX NECKO verb? loadgroup? getter? - ret = service->NewChannel("load", Trial.ToNewCString(), nsnull, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, 0, 0, &channel); + ret = NS_OpenURI(&channel, uri, service); if (NS_FAILED(ret)) return ret; @@ -365,10 +365,10 @@ int nsAccount::GetNCIValues(nsString MiddleValue) if (NS_FAILED(ret)) return ret; - ret = channel->OpenInputStream(0, -1, &in); + ret = channel->OpenInputStream(&in); if (NS_FAILED(ret)) return ret; - nsIPersistentProperties* props = nsnull; + nsIPersistentProperties* props = nsnull; ret = nsComponentManager::CreateInstance(kPersistentPropertiesCID, NULL, kIPersistentPropertiesIID, (void**) &props); @@ -424,7 +424,7 @@ int nsAccount::GetNCIValues(nsString MiddleValue) // ind++; // } -return 1; + return 1; } int nsAccount::GetConfigValues(nsString fileName) @@ -443,10 +443,12 @@ int nsAccount::GetConfigValues(nsString fileName) if (NS_FAILED(ret)) return ret; + nsCOMPtr<nsIURI> uri; + ret = NS_NewURI(getter_AddRefs(uri), Trial, nsnull, service); + if (NS_FAILED(ret)) return ret; + nsIChannel *channel = nsnull; - // XXX NECKO verb? loadgroup? getter? - ret = service->NewChannel("load", Trial.ToNewCString(), nsnull, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, 0, 0, &channel); + ret = NS_OpenURI(&channel, uri, service); if (NS_FAILED(ret)) return ret; @@ -455,7 +457,7 @@ int nsAccount::GetConfigValues(nsString fileName) if (NS_FAILED(ret)) return ret; - ret = channel->OpenInputStream(0, -1, &in); + ret = channel->OpenInputStream(&in); if (NS_FAILED(ret)) return ret; nsIPersistentProperties* props = nsnull; diff --git a/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp b/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp index 7b3fe048291..f225852fc72 100644 --- a/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp +++ b/mozilla/rdf/base/src/nsRDFXMLDataSource.cpp @@ -578,7 +578,7 @@ rdf_BlockingParse(nsIURI* aURL, nsIStreamListener* aConsumer) nsIInputStream* in; PRUint32 sourceOffset = 0; - rv = channel->OpenInputStream(0, -1, &in); + rv = channel->OpenInputStream(&in); // If we couldn't open the channel, then just return. if (NS_FAILED(rv)) return NS_OK; diff --git a/mozilla/rdf/base/src/rdfutil.cpp b/mozilla/rdf/base/src/rdfutil.cpp index e098a1e4186..963afa49530 100644 --- a/mozilla/rdf/base/src/rdfutil.cpp +++ b/mozilla/rdf/base/src/rdfutil.cpp @@ -98,7 +98,7 @@ rdf_MakeAbsoluteURI(const nsString& aBaseURI, nsString& aURI) rv = NS_NewURI(getter_AddRefs(base), aBaseURI); if (NS_FAILED(rv)) return rv; - rv = NS_MakeAbsoluteURI(aURI, base, result); + rv = NS_MakeAbsoluteURI(result, aURI, base); if (NS_FAILED(rv)) return rv; if (NS_SUCCEEDED(rv)) { @@ -120,7 +120,7 @@ rdf_MakeAbsoluteURI(nsIURI* aURL, nsString& aURI) nsresult rv; nsAutoString result; - rv = NS_MakeAbsoluteURI(aURI, aURL, result); + rv = NS_MakeAbsoluteURI(result, aURI, aURL); if (NS_SUCCEEDED(rv)) { aURI = result; @@ -140,7 +140,7 @@ rdf_MakeAbsoluteURI(nsIURI* aURL, nsCString& aURI) nsresult rv; nsXPIDLCString result; - rv = NS_MakeAbsoluteURI(aURI.GetBuffer(), aURL, getter_Copies(result)); + rv = NS_MakeAbsoluteURI(getter_Copies(result), aURI.GetBuffer(), aURL); if (NS_SUCCEEDED(rv)) { aURI.Assign(result); diff --git a/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp index 80b329cc8c5..e54813af0ba 100644 --- a/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp @@ -81,7 +81,7 @@ static NS_DEFINE_CID(kXULPrototypeCacheCID, NS_XULPROTOTYPECACHE_CID); class nsCachedChromeChannel : public nsIChannel { protected: - nsCachedChromeChannel(nsIURI* aURI, nsILoadGroup* aLoadGroup); + nsCachedChromeChannel(nsIURI* aURI); virtual ~nsCachedChromeChannel(); nsCOMPtr<nsIURI> mURI; @@ -90,7 +90,7 @@ protected: nsCOMPtr<nsISupports> mContext; nsLoadFlags mLoadAttributes; nsCOMPtr<nsISupports> mOwner; - PRBool mCancelled; + nsresult mStatus; struct LoadEvent { PLEvent mEvent; @@ -110,13 +110,14 @@ protected: public: static nsresult - Create(nsIURI* aURI, nsILoadGroup* aLoadGroup, nsIChannel** aResult); + Create(nsIURI* aURI, nsIChannel** aResult); NS_DECL_ISUPPORTS // nsIRequest NS_IMETHOD IsPending(PRBool *_retval) { *_retval = PR_TRUE; return NS_OK; } - NS_IMETHOD Cancel(void) { mCancelled = PR_TRUE; return NS_OK; } + NS_IMETHOD GetStatus(nsresult *status) { *status = mStatus; return NS_OK; } + NS_IMETHOD Cancel(nsresult status) { mStatus = status; return NS_OK; } NS_IMETHOD Suspend(void) { return NS_OK; } NS_IMETHOD Resume(void) { return NS_OK; } @@ -133,13 +134,13 @@ NS_IMPL_RELEASE(nsCachedChromeChannel); NS_IMPL_QUERY_INTERFACE2(nsCachedChromeChannel, nsIRequest, nsIChannel); nsresult -nsCachedChromeChannel::Create(nsIURI* aURI, nsILoadGroup* aLoadGroup, nsIChannel** aResult) +nsCachedChromeChannel::Create(nsIURI* aURI, nsIChannel** aResult) { NS_PRECONDITION(aURI != nsnull, "null ptr"); if (! aURI) return NS_ERROR_NULL_POINTER; - nsCachedChromeChannel* channel = new nsCachedChromeChannel(aURI, aLoadGroup); + nsCachedChromeChannel* channel = new nsCachedChromeChannel(aURI); if (! channel) return NS_ERROR_OUT_OF_MEMORY; @@ -149,8 +150,8 @@ nsCachedChromeChannel::Create(nsIURI* aURI, nsILoadGroup* aLoadGroup, nsIChannel } -nsCachedChromeChannel::nsCachedChromeChannel(nsIURI* aURI, nsILoadGroup* aLoadGroup) - : mURI(aURI), mLoadGroup(aLoadGroup), mLoadAttributes (nsIChannel::LOAD_NORMAL), mCancelled(PR_FALSE) +nsCachedChromeChannel::nsCachedChromeChannel(nsIURI* aURI) + : mURI(aURI), mLoadGroup(nsnull), mLoadAttributes (nsIChannel::LOAD_NORMAL), mStatus(NS_OK) { NS_INIT_REFCNT(); @@ -172,7 +173,7 @@ nsCachedChromeChannel::~nsCachedChromeChannel() NS_IMETHODIMP -nsCachedChromeChannel::GetOriginalURI(nsIURI * *aOriginalURI) +nsCachedChromeChannel::GetOriginalURI(nsIURI* *aOriginalURI) { *aOriginalURI = mURI; NS_ADDREF(*aOriginalURI); @@ -180,7 +181,14 @@ nsCachedChromeChannel::GetOriginalURI(nsIURI * *aOriginalURI) } NS_IMETHODIMP -nsCachedChromeChannel::GetURI(nsIURI * *aURI) +nsCachedChromeChannel::SetOriginalURI(nsIURI* aOriginalURI) +{ + mURI = aOriginalURI; + return NS_OK; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetURI(nsIURI* *aURI) { *aURI = mURI; NS_ADDREF(*aURI); @@ -188,15 +196,22 @@ nsCachedChromeChannel::GetURI(nsIURI * *aURI) } NS_IMETHODIMP -nsCachedChromeChannel::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) +nsCachedChromeChannel::SetURI(nsIURI* aURI) { - NS_NOTREACHED("don't do that"); + mURI = aURI; + return NS_OK; +} + +NS_IMETHODIMP +nsCachedChromeChannel::OpenInputStream(nsIInputStream **_retval) +{ +// NS_NOTREACHED("don't do that"); *_retval = nsnull; return NS_ERROR_FAILURE; } NS_IMETHODIMP -nsCachedChromeChannel::OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) +nsCachedChromeChannel::OpenOutputStream(nsIOutputStream **_retval) { NS_NOTREACHED("don't do that"); *_retval = nsnull; @@ -211,7 +226,7 @@ nsCachedChromeChannel::AsyncOpen(nsIStreamObserver *observer, nsISupports *ctxt) } NS_IMETHODIMP -nsCachedChromeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) +nsCachedChromeChannel::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { if (listener) { nsresult rv; @@ -255,7 +270,7 @@ nsCachedChromeChannel::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsIS } NS_IMETHODIMP -nsCachedChromeChannel::AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) +nsCachedChromeChannel::AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { NS_NOTREACHED("don't do that"); return NS_ERROR_FAILURE; @@ -286,6 +301,7 @@ NS_IMETHODIMP nsCachedChromeChannel::SetContentType(const char *aContentType) { // Do not allow the content-type to be changed. + NS_NOTREACHED("don't do that"); return NS_ERROR_FAILURE; } @@ -297,6 +313,90 @@ nsCachedChromeChannel::GetContentLength(PRInt32 *aContentLength) return NS_ERROR_FAILURE; } +NS_IMETHODIMP +nsCachedChromeChannel::SetContentLength(PRInt32 aContentLength) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetContentLength"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetTransferOffset(PRUint32 *aTransferOffset) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetTransferOffset(PRUint32 aTransferOffset) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetTransferOffset"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetTransferCount(PRInt32 *aTransferCount) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetTransferCount(PRInt32 aTransferCount) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetTransferCount"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetBufferSegmentSize(PRUint32 aBufferSegmentSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetBufferSegmentSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetBufferMaxSize(PRUint32 *aBufferMaxSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::GetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetBufferMaxSize(PRUint32 aBufferMaxSize) +{ + NS_NOTREACHED("nsCachedChromeChannel::SetBufferMaxSize"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetShouldCache(PRBool *aShouldCache) +{ + NS_NOTREACHED("GetShouldCache"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsCachedChromeChannel::GetPipeliningAllowed(PRBool *aPipeliningAllowed) +{ + *aPipeliningAllowed = PR_FALSE; + return NS_OK; +} + +NS_IMETHODIMP +nsCachedChromeChannel::SetPipeliningAllowed(PRBool aPipeliningAllowed) +{ + NS_NOTREACHED("SetPipeliningAllowed"); + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP nsCachedChromeChannel::GetOwner(nsISupports * *aOwner) { @@ -338,8 +438,7 @@ nsCachedChromeChannel::GetNotificationCallbacks(nsIInterfaceRequestor * *aNotifi NS_IMETHODIMP nsCachedChromeChannel::SetNotificationCallbacks(nsIInterfaceRequestor * aNotificationCallbacks) { - NS_NOTREACHED("don't do that"); - return NS_ERROR_FAILURE; + return NS_OK; // ignored } @@ -404,7 +503,7 @@ nsCachedChromeChannel::HandleStartLoadEvent(PLEvent* aEvent) // If the load has been cancelled, then just bail now. We won't // send On[Start|Stop]Request(). - if (channel->mCancelled) + if (NS_FAILED(channel->mStatus)) return nsnull; PR_LOG(gLog, PR_LOG_DEBUG, @@ -430,7 +529,7 @@ nsCachedChromeChannel::HandleStopLoadEvent(PLEvent* aEvent) channel, channel->mListener.get())); (void) channel->mListener->OnStopRequest(channel, channel->mContext, - (channel->mCancelled ? NS_BINDING_ABORTED : NS_OK), nsnull); + channel->mStatus, nsnull); if (channel->mLoadGroup) { PR_LOG(gLog, PR_LOG_DEBUG, @@ -543,13 +642,7 @@ nsChromeProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI, } NS_IMETHODIMP -nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* aNotificationCallbacks, - nsLoadFlags aLoadAttributes, - nsIURI* aOriginalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, +nsChromeProtocolHandler::NewChannel(nsIURI* aURI, nsIChannel* *aResult) { nsresult rv; @@ -576,7 +669,7 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, if (proto) { // ...in which case, we'll create a dummy stream that'll just // load the thing. - rv = nsCachedChromeChannel::Create(aURI, aLoadGroup, getter_AddRefs(result)); + rv = nsCachedChromeChannel::Create(aURI, getter_AddRefs(result)); if (NS_FAILED(rv)) return rv; } else { @@ -593,14 +686,7 @@ nsChromeProtocolHandler::NewChannel(const char* aVerb, nsIURI* aURI, NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); if (NS_FAILED(rv)) return rv; - rv = serv->NewChannelFromURI(aVerb, chromeURI, - aLoadGroup, - aNotificationCallbacks, - aLoadAttributes, - aOriginalURI ? aOriginalURI : aURI, - bufferSegmentSize, bufferMaxSize, - getter_AddRefs(result)); - + rv = serv->NewChannelFromURI(chromeURI, getter_AddRefs(result)); if (NS_FAILED(rv)) return rv; // Get a system principal for chrome and set the owner diff --git a/mozilla/rdf/content/src/nsXULDocument.cpp b/mozilla/rdf/content/src/nsXULDocument.cpp index 7abe6e863d6..d373610bc76 100644 --- a/mozilla/rdf/content/src/nsXULDocument.cpp +++ b/mozilla/rdf/content/src/nsXULDocument.cpp @@ -292,30 +292,45 @@ public: // nsIRequest NS_IMETHOD IsPending(PRBool *_retval) { *_retval = PR_TRUE; return NS_OK; } - NS_IMETHOD Cancel(void) { return NS_OK; } + NS_IMETHOD GetStatus(nsresult *status) { *status = NS_OK; return NS_OK; } + NS_IMETHOD Cancel(nsresult status) { return NS_OK; } NS_IMETHOD Suspend(void) { return NS_OK; } NS_IMETHOD Resume(void) { return NS_OK; } // nsIChannel - NS_IMETHOD GetOriginalURI(nsIURI * *aOriginalURI) { *aOriginalURI = gURI; NS_ADDREF(*aOriginalURI); return NS_OK; } - NS_IMETHOD GetURI(nsIURI * *aURI) { *aURI = gURI; NS_ADDREF(*aURI); return NS_OK; } - NS_IMETHOD OpenInputStream(PRUint32 startPosition, PRInt32 readCount, nsIInputStream **_retval) { *_retval = nsnull; return NS_OK; } - NS_IMETHOD OpenOutputStream(PRUint32 startPosition, nsIOutputStream **_retval) { *_retval = nsnull; return NS_OK; } + NS_IMETHOD GetOriginalURI(nsIURI* *aOriginalURI) { *aOriginalURI = gURI; NS_ADDREF(*aOriginalURI); return NS_OK; } + NS_IMETHOD SetOriginalURI(nsIURI* aOriginalURI) { gURI = aOriginalURI; NS_ADDREF(gURI); return NS_OK; } + NS_IMETHOD GetURI(nsIURI* *aURI) { *aURI = gURI; NS_ADDREF(*aURI); return NS_OK; } + NS_IMETHOD SetURI(nsIURI* aURI) { gURI = aURI; NS_ADDREF(gURI); return NS_OK; } + NS_IMETHOD OpenInputStream(nsIInputStream **_retval) { *_retval = nsnull; return NS_OK; } + NS_IMETHOD OpenOutputStream(nsIOutputStream **_retval) { *_retval = nsnull; return NS_OK; } NS_IMETHOD AsyncOpen(nsIStreamObserver *observer, nsISupports *ctxt) { return NS_OK; } - NS_IMETHOD AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsISupports *ctxt, nsIStreamListener *listener) { return NS_OK; } - NS_IMETHOD AsyncWrite(nsIInputStream *fromStream, PRUint32 startPosition, PRInt32 writeCount, nsISupports *ctxt, nsIStreamObserver *observer) { return NS_OK; } + NS_IMETHOD AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { return NS_OK; } + NS_IMETHOD AsyncWrite(nsIInputStream *fromStream, nsIStreamObserver *observer, nsISupports *ctxt) { return NS_OK; } NS_IMETHOD GetLoadAttributes(nsLoadFlags *aLoadAttributes) { *aLoadAttributes = nsIChannel::LOAD_NORMAL; return NS_OK; } NS_IMETHOD SetLoadAttributes(nsLoadFlags aLoadAttributes) { return NS_OK; } NS_IMETHOD GetContentType(char * *aContentType) { *aContentType = nsnull; return NS_OK; } NS_IMETHOD SetContentType(const char *aContentType) { return NS_OK; } NS_IMETHOD GetContentLength(PRInt32 *aContentLength) { *aContentLength = 0; return NS_OK; } + NS_IMETHOD SetContentLength(PRInt32 aContentLength) { NS_NOTREACHED("SetContentLength"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetTransferOffset(PRUint32 *aTransferOffset) { NS_NOTREACHED("GetTransferOffset"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetTransferOffset(PRUint32 aTransferOffset) { NS_NOTREACHED("SetTransferOffset"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetTransferCount(PRInt32 *aTransferCount) { NS_NOTREACHED("GetTransferCount"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetTransferCount(PRInt32 aTransferCount) { NS_NOTREACHED("SetTransferCount"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetBufferSegmentSize(PRUint32 *aBufferSegmentSize) { NS_NOTREACHED("GetBufferSegmentSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetBufferSegmentSize(PRUint32 aBufferSegmentSize) { NS_NOTREACHED("SetBufferSegmentSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetBufferMaxSize(PRUint32 *aBufferMaxSize) { NS_NOTREACHED("GetBufferMaxSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD SetBufferMaxSize(PRUint32 aBufferMaxSize) { NS_NOTREACHED("SetBufferMaxSize"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetShouldCache(PRBool *aShouldCache) { NS_NOTREACHED("GetShouldCache"); return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD GetPipeliningAllowed(PRBool *aPipeliningAllowed) { *aPipeliningAllowed = PR_FALSE; return NS_OK; } + NS_IMETHOD SetPipeliningAllowed(PRBool aPipeliningAllowed) { NS_NOTREACHED("SetPipeliningAllowed"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHOD GetOwner(nsISupports * *aOwner) { *aOwner = nsnull; return NS_OK; } NS_IMETHOD SetOwner(nsISupports * aOwner) { return NS_OK; } NS_IMETHOD GetLoadGroup(nsILoadGroup * *aLoadGroup) { *aLoadGroup = mLoadGroup; NS_IF_ADDREF(*aLoadGroup); return NS_OK; } NS_IMETHOD SetLoadGroup(nsILoadGroup * aLoadGroup) { mLoadGroup = aLoadGroup; return NS_OK; } NS_IMETHOD GetNotificationCallbacks(nsIInterfaceRequestor * *aNotificationCallbacks) { *aNotificationCallbacks = nsnull; return NS_OK; } NS_IMETHOD SetNotificationCallbacks(nsIInterfaceRequestor * aNotificationCallbacks) { return NS_OK; } - NS_IMETHOD GetSecurityInfo(nsISupports **info) {*info = nsnull; return NS_OK;} + NS_IMETHOD GetSecurityInfo(nsISupports **info) {*info = nsnull; return NS_OK;} }; PRInt32 PlaceholderChannel::gRefCnt; @@ -1005,35 +1020,35 @@ nsXULDocument::SetRootContent(nsIContent* aRoot) NS_IMETHODIMP nsXULDocument::AppendToProlog(nsIContent* aContent) { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::AppendToProlog"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::AppendToEpilog(nsIContent* aContent) { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::AppendToEpilog"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::ChildAt(PRInt32 aIndex, nsIContent*& aResult) const { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::ChildAt"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::IndexOf(nsIContent* aPossibleChild, PRInt32& aIndex) const { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::IndexOf"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::GetChildCount(PRInt32& aCount) { - NS_ASSERTION(0, "not implemented"); + NS_NOTREACHED("nsXULDocument::GetChildCount"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -1980,6 +1995,7 @@ NS_IMETHODIMP nsXULDocument::GetContentById(const nsString& aName, nsIContent** aContent) { NS_ASSERTION(0,"not implemented"); + NS_NOTREACHED("nsXULDocument::GetContentById"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -1988,6 +2004,7 @@ NS_IMETHODIMP nsXULDocument::SetTransformMediator(nsITransformMediator* aMediator) { NS_ASSERTION(0,"not implemented"); + NS_NOTREACHED("nsXULDocument::SetTransformMediator"); return NS_ERROR_NOT_IMPLEMENTED; } #endif @@ -2227,7 +2244,7 @@ nsXULDocument::LoadFromStream(nsIInputStream& xulStream, NS_IMETHODIMP nsXULDocument::GetDoctype(nsIDOMDocumentType** aDoctype) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetDoctype"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2235,7 +2252,7 @@ nsXULDocument::GetDoctype(nsIDOMDocumentType** aDoctype) NS_IMETHODIMP nsXULDocument::GetImplementation(nsIDOMDOMImplementation** aImplementation) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetImplementation"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2311,7 +2328,7 @@ nsXULDocument::CreateElement(const nsString& aTagName, nsIDOMElement** aReturn) NS_IMETHODIMP nsXULDocument::CreateDocumentFragment(nsIDOMDocumentFragment** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateDocumentFragment"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2343,7 +2360,7 @@ nsXULDocument::CreateTextNode(const nsString& aData, nsIDOMText** aReturn) NS_IMETHODIMP nsXULDocument::CreateComment(const nsString& aData, nsIDOMComment** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateComment"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2351,7 +2368,7 @@ nsXULDocument::CreateComment(const nsString& aData, nsIDOMComment** aReturn) NS_IMETHODIMP nsXULDocument::CreateCDATASection(const nsString& aData, nsIDOMCDATASection** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateCDATASection"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2359,7 +2376,7 @@ nsXULDocument::CreateCDATASection(const nsString& aData, nsIDOMCDATASection** aR NS_IMETHODIMP nsXULDocument::CreateProcessingInstruction(const nsString& aTarget, const nsString& aData, nsIDOMProcessingInstruction** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateProcessingInstruction"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2367,7 +2384,7 @@ nsXULDocument::CreateProcessingInstruction(const nsString& aTarget, const nsStri NS_IMETHODIMP nsXULDocument::CreateAttribute(const nsString& aName, nsIDOMAttr** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateAttribute"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2375,7 +2392,7 @@ nsXULDocument::CreateAttribute(const nsString& aName, nsIDOMAttr** aReturn) NS_IMETHODIMP nsXULDocument::CreateEntityReference(const nsString& aName, nsIDOMEntityReference** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateEntityReference"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2573,7 +2590,7 @@ nsXULDocument::DestroyForwardReferences() NS_IMETHODIMP nsXULDocument::GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetStyleSheets"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -2632,21 +2649,21 @@ nsXULDocument::CreateElementWithNameSpace(const nsString& aTagName, NS_IMETHODIMP nsXULDocument::CreateRange(nsIDOMRange** aRange) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::CreateRange"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::GetWidth(PRInt32* aWidth) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetWidth"); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP nsXULDocument::GetHeight(PRInt32* aHeight) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::GetHeight"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3072,7 +3089,7 @@ nsXULDocument::GetOwnerDocument(nsIDOMDocument** aOwnerDocument) NS_IMETHODIMP nsXULDocument::InsertBefore(nsIDOMNode* aNewChild, nsIDOMNode* aRefChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::InsertBefore"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3080,7 +3097,7 @@ nsXULDocument::InsertBefore(nsIDOMNode* aNewChild, nsIDOMNode* aRefChild, nsIDOM NS_IMETHODIMP nsXULDocument::ReplaceChild(nsIDOMNode* aNewChild, nsIDOMNode* aOldChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::ReplaceChild"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3088,7 +3105,7 @@ nsXULDocument::ReplaceChild(nsIDOMNode* aNewChild, nsIDOMNode* aOldChild, nsIDOM NS_IMETHODIMP nsXULDocument::RemoveChild(nsIDOMNode* aOldChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::RemoveChild"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -3096,7 +3113,7 @@ nsXULDocument::RemoveChild(nsIDOMNode* aOldChild, nsIDOMNode** aReturn) NS_IMETHODIMP nsXULDocument::AppendChild(nsIDOMNode* aNewChild, nsIDOMNode** aReturn) { - NS_NOTYETIMPLEMENTED("write me!"); + NS_NOTREACHED("nsXULDocument::AppendChild"); return NS_ERROR_NOT_IMPLEMENTED; } @@ -4782,7 +4799,7 @@ nsXULDocument::ResumeWalk() if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIInputStream> in; PRUint32 sourceOffset = 0; - rv = channel->OpenInputStream(0, -1, getter_AddRefs(in)); + rv = channel->OpenInputStream(getter_AddRefs(in)); // If we couldn't open the channel, then just return. if (NS_FAILED(rv)) return NS_OK; @@ -4822,7 +4839,7 @@ nsXULDocument::ResumeWalk() } else { nsCOMPtr<nsILoadGroup> group = do_QueryReferent(mDocumentLoadGroup); - rv = NS_OpenURI(listener, nsnull, uri, group); + rv = NS_OpenURI(listener, nsnull, uri, nsnull, group); if (NS_FAILED(rv)) return rv; } diff --git a/mozilla/rdf/content/src/nsXULKeyListener.cpp b/mozilla/rdf/content/src/nsXULKeyListener.cpp index 9c28f802359..261bfd36539 100644 --- a/mozilla/rdf/content/src/nsXULKeyListener.cpp +++ b/mozilla/rdf/content/src/nsXULKeyListener.cpp @@ -1160,7 +1160,7 @@ NS_IMETHODIMP nsXULKeyListenerImpl::LoadKeyBindingDocument(nsIURI* aURI, nsIDOMX nsCOMPtr<nsIInputStream> in; PRUint32 sourceOffset = 0; - rv = channel->OpenInputStream(0, -1, getter_AddRefs(in)); + rv = channel->OpenInputStream(getter_AddRefs(in)); // If we couldn't open the channel, then just return. if (NS_FAILED(rv)) return NS_OK; diff --git a/mozilla/string/obsolete/nsString2.h b/mozilla/string/obsolete/nsString2.h index da428df328f..ad993a390fa 100644 --- a/mozilla/string/obsolete/nsString2.h +++ b/mozilla/string/obsolete/nsString2.h @@ -392,7 +392,7 @@ public: /** * Creates an UTF8 clone of this string * Note that calls to this method should be matched with calls to Recycle(). - * @return ptr to new isolatin1 string + * @return ptr to new null-terminated UTF8 string */ char* ToNewUTF8String() const; diff --git a/mozilla/uriloader/base/nsDocLoader.cpp b/mozilla/uriloader/base/nsDocLoader.cpp index 98b9b1ebdab..7fbb408e798 100644 --- a/mozilla/uriloader/base/nsDocLoader.cpp +++ b/mozilla/uriloader/base/nsDocLoader.cpp @@ -96,7 +96,7 @@ nsDocLoaderImpl::Init() { nsresult rv; - rv = NS_NewLoadGroup(this, getter_AddRefs(mLoadGroup)); + rv = NS_NewLoadGroup(getter_AddRefs(mLoadGroup), this); if (NS_FAILED(rv)) return rv; PR_LOG(gDocLoaderLog, PR_LOG_DEBUG, @@ -215,7 +215,7 @@ nsDocLoaderImpl::Stop(void) } } - rv = mLoadGroup->Cancel(); + rv = mLoadGroup->Cancel(NS_BINDING_ABORTED); return rv; } diff --git a/mozilla/uriloader/base/nsURILoader.cpp b/mozilla/uriloader/base/nsURILoader.cpp index ab24aa0f7c9..4787ea50d2c 100644 --- a/mozilla/uriloader/base/nsURILoader.cpp +++ b/mozilla/uriloader/base/nsURILoader.cpp @@ -243,7 +243,7 @@ nsresult nsDocumentOpenInfo::Open(nsIChannel * aChannel, // now jut open the channel! if (aChannel) - rv = aChannel->AsyncRead(0, -1, nsnull, this); + rv = aChannel->AsyncRead(this, nsnull); return rv; } diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 4561a62bd6b..2abd376ea91 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -1080,7 +1080,8 @@ nsWebShell::DoLoadURL(nsIURI * aUri, // so move the creation down into each of the if clauses... if (nsnull != (const char *) ref) { - rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, interfaceRequestor); + rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, nsnull, + interfaceRequestor); if (NS_FAILED(rv)) return rv; if (!mProcessedEndDocumentLoad) rv = OnStartDocumentLoad(mDocLoader, aUri, "load"); @@ -1101,7 +1102,8 @@ nsWebShell::DoLoadURL(nsIURI * aUri, } else if (aType == nsISessionHistory::LOAD_HISTORY) { - rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, interfaceRequestor); + rv = NS_OpenURI(getter_AddRefs(dummyChannel), aUri, nsnull, nsnull, + interfaceRequestor); if (NS_FAILED(rv)) return rv; rv = OnStartDocumentLoad(mDocLoader, aUri, "load"); // Go to the top of the current document @@ -1196,16 +1198,18 @@ nsWebShell::DoLoadURL(nsIURI * aUri, Recycle(referrerStr); } - rv = pNetService->NewChannelFromURI(aCommand, aUri, loadGroup, requestor, - aType, referrer /* referring uri */, - 0, 0, - getter_AddRefs(pChannel)); + rv = NS_OpenURI(getter_AddRefs(pChannel), aUri, pNetService, loadGroup, requestor, aType); + if (NS_SUCCEEDED(rv)) { + // XXX wrong, but needed for now: + rv = pChannel->SetOriginalURI(referrer ? referrer : aUri); + } if (NS_FAILED(rv)) { - if (rv == NS_ERROR_DOM_RETVAL_UNDEFINED) // if causing the channel changed the - return NS_OK; // dom and there is nothing else to do - else + if (rv == NS_ERROR_DOM_RETVAL_UNDEFINED) // if causing the channel changed the + return NS_OK; // dom and there is nothing else to do + else return rv; // uhoh we were unable to get a channel to handle the url!!! - } + } + // Mark the channel as being a document URI... nsLoadFlags loadAttribs = 0; pChannel->GetLoadAttributes(&loadAttribs); diff --git a/mozilla/webshell/tests/viewer/nsWebCrawler.cpp b/mozilla/webshell/tests/viewer/nsWebCrawler.cpp index 16059b45c0b..c850271e648 100644 --- a/mozilla/webshell/tests/viewer/nsWebCrawler.cpp +++ b/mozilla/webshell/tests/viewer/nsWebCrawler.cpp @@ -695,7 +695,7 @@ nsWebCrawler::FindURLsIn(nsIDocument* aDocument, nsIContent* aNode) } nsIURI* docURL = aDocument->GetDocumentURL(); nsresult rv; - rv = NS_MakeAbsoluteURI(src, docURL, absURLSpec); + rv = NS_MakeAbsoluteURI(absURLSpec, src, docURL); if (NS_OK == rv) { nsCOMPtr<nsIAtom> urlAtom = getter_AddRefs(NS_NewAtom(absURLSpec)); if (0 == mVisited->Get(urlAtom)) { diff --git a/mozilla/xpcom/ds/nsString2.h b/mozilla/xpcom/ds/nsString2.h index da428df328f..ad993a390fa 100644 --- a/mozilla/xpcom/ds/nsString2.h +++ b/mozilla/xpcom/ds/nsString2.h @@ -392,7 +392,7 @@ public: /** * Creates an UTF8 clone of this string * Note that calls to this method should be matched with calls to Recycle(). - * @return ptr to new isolatin1 string + * @return ptr to new null-terminated UTF8 string */ char* ToNewUTF8String() const; diff --git a/mozilla/xpcom/io/nsLocalFileWin.cpp b/mozilla/xpcom/io/nsLocalFileWin.cpp index bcb27c77e85..fd972b12e42 100644 --- a/mozilla/xpcom/io/nsLocalFileWin.cpp +++ b/mozilla/xpcom/io/nsLocalFileWin.cpp @@ -177,7 +177,7 @@ class nsDirEnumerator : public nsISimpleEnumerator nsCOMPtr<nsIFile> file; rv = mParent->Clone(getter_AddRefs(file)); - if (NS_FAILED(rv)) + if (NS_FAILED(rv)) return rv; rv = file->Append(entry->name); diff --git a/mozilla/xpcom/io/nsPipe2.cpp b/mozilla/xpcom/io/nsPipe2.cpp index 0ec0f925107..c0df2343d35 100644 --- a/mozilla/xpcom/io/nsPipe2.cpp +++ b/mozilla/xpcom/io/nsPipe2.cpp @@ -605,7 +605,8 @@ nsPipe::nsPipeOutputStream::Close(void) { nsPipe* pipe = GET_OUTPUTSTREAM_PIPE(this); nsAutoCMonitor mon(pipe); - pipe->mCondition = NS_BASE_STREAM_CLOSED; + if (pipe->mCondition == NS_OK) + pipe->mCondition = NS_BASE_STREAM_CLOSED; nsresult rv = mon.Notify(); // wake up the writer if (NS_FAILED(rv)) return rv; diff --git a/mozilla/xpcom/string/obsolete/nsString2.h b/mozilla/xpcom/string/obsolete/nsString2.h index da428df328f..ad993a390fa 100644 --- a/mozilla/xpcom/string/obsolete/nsString2.h +++ b/mozilla/xpcom/string/obsolete/nsString2.h @@ -392,7 +392,7 @@ public: /** * Creates an UTF8 clone of this string * Note that calls to this method should be matched with calls to Recycle(). - * @return ptr to new isolatin1 string + * @return ptr to new null-terminated UTF8 string */ char* ToNewUTF8String() const; diff --git a/mozilla/xpcom/tests/PropertiesTest.cpp b/mozilla/xpcom/tests/PropertiesTest.cpp index eb5d1e121c9..fa7636a80c5 100644 --- a/mozilla/xpcom/tests/PropertiesTest.cpp +++ b/mozilla/xpcom/tests/PropertiesTest.cpp @@ -109,16 +109,14 @@ main(int argc, char* argv[]) if (NS_FAILED(ret)) return ret; nsIChannel *channel = nsnull; - // XXX NECKO verb? loadgroup? getter? - ret = service->NewChannel("load", TEST_URL, nsnull, nsnull, nsnull, - nsIChannel::LOAD_NORMAL, nsnull, 0, 0, &channel); + ret = service->NewChannel(TEST_URL, nsnull, &channel); if (NS_FAILED(ret)) return ret; nsIEventQueue *eventQ = nsnull; ret = eventQService->GetThreadEventQueue(NS_CURRENT_THREAD, &eventQ); if (NS_FAILED(ret)) return ret; - ret = channel->OpenInputStream(0, -1, &in); + ret = channel->OpenInputStream(&in); if (NS_FAILED(ret)) return ret; nsIPersistentProperties* props = nsnull; diff --git a/mozilla/xpcom/tests/nsIFileTest.cpp b/mozilla/xpcom/tests/nsIFileTest.cpp index cd7016680f1..808d78aa305 100644 --- a/mozilla/xpcom/tests/nsIFileTest.cpp +++ b/mozilla/xpcom/tests/nsIFileTest.cpp @@ -292,4 +292,5 @@ int main(void) #endif /* XP_UNIX */ #endif /* XP_PC */ + return 0; } diff --git a/mozilla/xpfe/appshell/src/nsAbout.cpp b/mozilla/xpfe/appshell/src/nsAbout.cpp index 60d7485f331..c75a3ebcc79 100644 --- a/mozilla/xpfe/appshell/src/nsAbout.cpp +++ b/mozilla/xpfe/appshell/src/nsAbout.cpp @@ -33,24 +33,13 @@ NS_IMPL_ISUPPORTS(nsAbout, NS_GET_IID(nsIAboutModule)); static const char kURI[] = "chrome://global/content/about.html"; NS_IMETHODIMP -nsAbout::NewChannel(const char *verb, - nsIURI *aURI, - nsILoadGroup* aLoadGroup, - nsIInterfaceRequestor* notificationCallbacks, - nsLoadFlags loadAttributes, - nsIURI* originalURI, - PRUint32 bufferSegmentSize, - PRUint32 bufferMaxSize, - nsIChannel **result) +nsAbout::NewChannel(nsIURI *aURI, nsIChannel **result) { nsresult rv; NS_WITH_SERVICE(nsIIOService, ioService, kIOServiceCID, &rv); if ( NS_FAILED(rv) ) return rv; - rv = ioService->NewChannel(verb, kURI, NULL, aLoadGroup, - notificationCallbacks, loadAttributes, - originalURI, bufferSegmentSize, bufferMaxSize, - result); + rv = ioService->NewChannel(kURI, nsnull, result); return rv; } diff --git a/mozilla/xpfe/browser/src/nsBrowserInstance.cpp b/mozilla/xpfe/browser/src/nsBrowserInstance.cpp index 3c740ef9771..72a355c77bb 100644 --- a/mozilla/xpfe/browser/src/nsBrowserInstance.cpp +++ b/mozilla/xpfe/browser/src/nsBrowserInstance.cpp @@ -2362,7 +2362,7 @@ NS_IMETHODIMP nsBrowserContentHandler::HandleContent(const char * aContentType, JS_PopArguments(jsContext, mark); // now abort the current channel load... - aChannel->Cancel(); + aChannel->Cancel(NS_BINDING_ABORTED); return NS_OK; } diff --git a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp index 293d83eda27..7341a072f6e 100644 --- a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp +++ b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp @@ -2216,7 +2216,7 @@ nsBookmarksService::FireTimer(nsITimer* aTimer, void* aClosure) // httpChannel->SetRequestMethod(HM_GET); httpChannel->SetRequestMethod(HM_HEAD); - rv = channel->AsyncRead(0, -1, nsnull, bmks); + rv = channel->AsyncRead(bmks, nsnull); } } #endif diff --git a/mozilla/xpfe/components/directory/directory.js b/mozilla/xpfe/components/directory/directory.js index 75d24a55f48..584e77dc780 100644 --- a/mozilla/xpfe/components/directory/directory.js +++ b/mozilla/xpfe/components/directory/directory.js @@ -134,13 +134,11 @@ function ReadDirectory(url) var uri = ios.newURI(url, null); // Create a channel... - var channel = ios.newChannelFromURI('load', uri, null, null, - Components.interfaces.nsIChannel.LOAD_NORMAL, - null, 0, 0); + var channel = ios.newChannelFromURI(uri, null); // ...so that we can pipe it into a new HTTPIndex listener to // parse the directory's contents. - channel.asyncRead(0, -1, null, HTTPIndex.CreateListener()); + channel.asyncRead(HTTPIndex.CreateListener(), null); } diff --git a/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp b/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp index fdb6f61435e..500c1552b94 100644 --- a/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp +++ b/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp @@ -669,7 +669,7 @@ nsHTTPIndexParser::ParseData(const char* aDataStr) char* result = nsnull; rv = ioServ->Escape(value.mStr, nsIIOService::url_FileBaseName + nsIIOService::url_Forced, &result); - rv = NS_MakeAbsoluteURI(result, realbase, entryuri); + rv = NS_MakeAbsoluteURI(entryuri, result, realbase); CRTFREEIF(result); NS_ASSERTION(NS_SUCCEEDED(rv), "unable make absolute URI"); if (NS_FAILED(rv)) break; @@ -984,7 +984,7 @@ nsDirectoryViewerFactory::CreateInstance(const char *aCommand, if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIChannel> channel; - rv = NS_OpenURI(getter_AddRefs(channel), uri, aLoadGroup); + rv = NS_OpenURI(getter_AddRefs(channel), uri, nsnull, aLoadGroup); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsIStreamListener> listener; @@ -993,7 +993,7 @@ nsDirectoryViewerFactory::CreateInstance(const char *aCommand, aDocViewerResult); if (NS_FAILED(rv)) return rv; - rv = channel->AsyncRead(0, -1, nsnull, listener); + rv = channel->AsyncRead(listener, nsnull); if (NS_FAILED(rv)) return rv; // Create an HTTPIndex object so that we can stuff it into the script context diff --git a/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp b/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp index 05b6432e335..741dcbe4072 100755 --- a/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp +++ b/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp @@ -414,7 +414,7 @@ InternetSearchDataSource::InternetSearchDataSource(void) NS_GET_IID(nsIRDFService), (nsISupports**) &gRDFService); PR_ASSERT(NS_SUCCEEDED(rv)); - rv = NS_NewLoadGroup(nsnull, getter_AddRefs(mLoadGroup)); + rv = NS_NewLoadGroup(getter_AddRefs(mLoadGroup), nsnull); PR_ASSERT(NS_SUCCEEDED(rv)); gRDFService->GetResource(kURINC_SearchEngineRoot, &kNC_SearchEngineRoot); @@ -2153,10 +2153,10 @@ InternetSearchDataSource::Stop() break; nsCOMPtr<nsIChannel> channel = do_QueryInterface(isupports); if (!channel) continue; - channel->Cancel(); + channel->Cancel(NS_BINDING_ABORTED); } } - mLoadGroup->Cancel(); + mLoadGroup->Cancel(NS_BINDING_ABORTED); } // remove any loading icons @@ -2539,7 +2539,7 @@ InternetSearchDataSource::DoSearch(nsIRDFResource *source, nsIRDFResource *engin if (NS_SUCCEEDED(rv = NS_NewURI(getter_AddRefs(url), action))) { nsCOMPtr<nsIChannel> channel; - if (NS_SUCCEEDED(rv = NS_OpenURI(getter_AddRefs(channel), url, mLoadGroup))) + if (NS_SUCCEEDED(rv = NS_OpenURI(getter_AddRefs(channel), url, nsnull, mLoadGroup))) { // send a "MultiSearch" header @@ -2567,15 +2567,15 @@ InternetSearchDataSource::DoSearch(nsIRDFResource *source, nsIRDFResource *engin postStr += input; nsCOMPtr<nsIInputStream> postDataStream; - if (NS_SUCCEEDED(rv = NS_NewPostDataStream(PR_FALSE, nsCAutoString(postStr), - 0, getter_AddRefs(postDataStream)))) + if (NS_SUCCEEDED(rv = NS_NewPostDataStream(getter_AddRefs(postDataStream), + PR_FALSE, nsCAutoString(postStr), 0))) { httpChannel->SetPostDataStream(postDataStream); } } } - if (NS_SUCCEEDED(rv = channel->AsyncRead(0, -1, context, this))) + if (NS_SUCCEEDED(rv = channel->AsyncRead(this, context))) { } } @@ -3599,8 +3599,8 @@ InternetSearchDataSource::ParseHTML(nsIURI *aURL, nsIRDFResource *mParent, nsIRD if (hrefStr.Length() < 1) continue; char *absURIStr = nsnull; - if (NS_SUCCEEDED(rv = NS_MakeAbsoluteURI(nsCAutoString(hrefStr), - aURL, &absURIStr)) && (absURIStr)) + if (NS_SUCCEEDED(rv = NS_MakeAbsoluteURI(&absURIStr, nsCAutoString(hrefStr), aURL)) + && (absURIStr)) { hrefStr = absURIStr; diff --git a/mozilla/xpfe/components/ucth/src/nsUnknownContentTypeHandler.cpp b/mozilla/xpfe/components/ucth/src/nsUnknownContentTypeHandler.cpp index 6ff533e4889..9bc44e80cdc 100644 --- a/mozilla/xpfe/components/ucth/src/nsUnknownContentTypeHandler.cpp +++ b/mozilla/xpfe/components/ucth/src/nsUnknownContentTypeHandler.cpp @@ -29,6 +29,7 @@ #include "nsIScriptGlobalObject.h" #include "nsIChannel.h" #include "nsIURI.h" +#include "nsIStreamObserver.h" // {42770B50-03E9-11d3-8068-00600811A9C3} #define NS_UNKNOWNCONTENTTYPEHANDLER_CID \ @@ -73,7 +74,7 @@ nsUnknownContentTypeHandler::HandleUnknownContentType( nsIChannel *aChannel, channel = do_QueryInterface( aChannel ); // Cancel input channel now. - rv = aChannel->Cancel(); + rv = aChannel->Cancel(NS_BINDING_ABORTED); if ( NS_FAILED( rv ) ) { DEBUG_PRINTF( PR_STDOUT, "%s %d: Cancel failed, rv=0x%08X\n", (char*)__FILE__, (int)__LINE__, (int)rv ); diff --git a/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp b/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp index 1c1e2998e52..8d27903f261 100644 --- a/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp +++ b/mozilla/xpfe/components/xfer/src/nsStreamXferOp.cpp @@ -169,14 +169,14 @@ nsStreamXferOp::Start( void ) { nsCOMPtr<nsILocalFile> file; rv = NS_NewLocalFile(target, getter_AddRefs(file)); if (NS_SUCCEEDED(rv)) { - rv = fts->CreateTransport(file, PR_RDONLY, "load", 0, 0, - getter_AddRefs( mOutputChannel)); + rv = fts->CreateTransport(file, PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE, + 0664, getter_AddRefs( mOutputChannel)); } if ( NS_SUCCEEDED( rv ) ) { #ifdef USE_ASYNC_READ // Read the input channel (with ourself as the listener). - rv = mInputChannel->AsyncRead( 0, -1, 0, this ); + rv = mInputChannel->AsyncRead(this, nsnull); if ( NS_FAILED( rv ) ) { this->OnError( kOpAsyncRead, rv ); } @@ -191,7 +191,7 @@ nsStreamXferOp::Start( void ) { // get the input stream from the channel. nsCOMPtr<nsIInputStream> inStream; - rv = mInputChannel->OpenInputStream(0, -1, getter_AddRefs(inStream)); + rv = mInputChannel->OpenInputStream(getter_AddRefs(inStream)); if (NS_FAILED(rv)) { this->OnError(0, rv); return rv; @@ -199,7 +199,7 @@ nsStreamXferOp::Start( void ) { // hand the output channel our input stream. it will take care // of reading data from the stream and writing it to disk. - rv = mOutputChannel->AsyncWrite(inStream, 0, -1, nsnull, NS_STATIC_CAST(nsIStreamObserver*,this)); + rv = mOutputChannel->AsyncWrite(inStream, NS_STATIC_CAST(nsIStreamObserver*,this), nsnull); if ( NS_FAILED( rv ) ) { this->OnError( kOpAsyncWrite, rv ); } @@ -239,7 +239,7 @@ nsStreamXferOp::Stop( void ) { nsCOMPtr<nsIChannel> channel = mInputChannel; mInputChannel = 0; // Now cancel it. - rv = channel->Cancel(); + rv = channel->Cancel(NS_BINDING_ABORTED); if ( NS_FAILED( rv ) ) { this->OnError( kOpInputCancel, rv ); } @@ -278,7 +278,7 @@ nsStreamXferOp::OnStartRequest(nsIChannel* channel, nsISupports* aContext) { #ifdef USE_ASYNC_READ // Open output stream. - rv = mOutputChannel->OpenOutputStream( 0, getter_AddRefs( mOutputStream ) ); + rv = mOutputChannel->OpenOutputStream( getter_AddRefs( mOutputStream ) ); if ( NS_FAILED( rv ) ) { // Give up all hope. diff --git a/mozilla/xpinstall/src/nsXPInstallManager.cpp b/mozilla/xpinstall/src/nsXPInstallManager.cpp index 89b1b3d4d93..1e8f483ad0c 100644 --- a/mozilla/xpinstall/src/nsXPInstallManager.cpp +++ b/mozilla/xpinstall/src/nsXPInstallManager.cpp @@ -343,11 +343,11 @@ NS_IMETHODIMP nsXPInstallManager::DownloadNext() { nsCOMPtr<nsIChannel> channel; - rv = NS_OpenURI(getter_AddRefs(channel), pURL, nsnull, this); + rv = NS_OpenURI(getter_AddRefs(channel), pURL, nsnull, nsnull, this); if (NS_SUCCEEDED(rv)) { - rv = channel->AsyncRead(0, -1, nsnull, this); + rv = channel->AsyncRead(this, nsnull); } } }