From 36282c2a4aea922e316945c6e3cf4be2790dbf85 Mon Sep 17 00:00:00 2001 From: "warren%netscape.com" Date: Tue, 8 Jun 1999 18:28:10 +0000 Subject: [PATCH] Added NewChannel method. git-svn-id: svn://10.0.0.236/trunk@34214 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/netwerk/base/src/nsIOService.cpp | 33 ++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/mozilla/netwerk/base/src/nsIOService.cpp b/mozilla/netwerk/base/src/nsIOService.cpp index 072f8319bfc..a4098abfaf7 100644 --- a/mozilla/netwerk/base/src/nsIOService.cpp +++ b/mozilla/netwerk/base/src/nsIOService.cpp @@ -152,7 +152,32 @@ nsIOService::NewChannelFromURI(const char* verb, nsIURI *aURI, nsIEventSinkGetter *eventSinkGetter, nsIChannel **result) { - return NS_ERROR_NOT_IMPLEMENTED; + nsresult rv; + + char* scheme; + rv = aURI->GetScheme(&scheme); + if (NS_FAILED(rv)) return rv; + + nsIProtocolHandler* handler; + rv = GetProtocolHandler(scheme, &handler); + nsCRT::free(scheme); + if (NS_FAILED(rv)) return rv; + + nsIEventQueue* eventQ; + NS_WITH_SERVICE(nsIEventQueueService, eventQService, kEventQueueService, &rv); + if (NS_SUCCEEDED(rv)) { + rv = eventQService->GetThreadEventQueue(PR_CurrentThread(), &eventQ); + } + if (NS_FAILED(rv)) return rv; + + nsIChannel* channel; + rv = handler->NewChannel(verb, aURI, eventSinkGetter, eventQ, + &channel); + NS_RELEASE(handler); + if (NS_FAILED(rv)) return rv; + + *result = channel; + return rv; } NS_IMETHODIMP @@ -161,7 +186,11 @@ nsIOService::NewChannel(const char* verb, const char *aSpec, nsIEventSinkGetter *eventSinkGetter, nsIChannel **result) { - return NS_ERROR_NOT_IMPLEMENTED; + nsresult rv; + nsIURI* uri; + rv = NewURI(aSpec, aBaseURI, &uri); + if (NS_FAILED(rv)) return rv; + return NewChannelFromURI(verb, uri, eventSinkGetter, result); } NS_IMETHODIMP