From 9ee2f5e0adf0ce87db5e40f93f703e46cb4d7c47 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 15 Aug 2006 21:55:33 +0200 Subject: [PATCH] mshtml: Correctly handle nsILoadGroup. --- dlls/mshtml/navigate.c | 12 +++++++++++- dlls/mshtml/nsio.c | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index c37c4759a16..c588f05088b 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -309,10 +309,20 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *ifac TRACE("(%p)->(%08lx %s)\n", This, hresult, debugstr_w(szError)); - if(This->nslistener) + if(This->nslistener) { nsIStreamListener_OnStopRequest(This->nslistener, (nsIRequest*)NSCHANNEL(This->nschannel), This->nscontext, NS_OK); + if(This->nschannel->load_group) { + nsresult nsres; + + nsres = nsILoadGroup_RemoveRequest(This->nschannel->load_group, + (nsIRequest*)NSCHANNEL(This->nschannel), NULL, NS_OK); + if(NS_FAILED(nsres)) + ERR("RemoveRequest failed: %08lx\n", nsres); + } + } + return S_OK; } diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 0c26fd4c4dd..d643e354a09 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -602,8 +602,17 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen nsIWebBrowserChrome_Release(NSWBCHROME(container)); - if(!This->channel) + if(!This->channel) { + if(This->load_group) { + nsres = nsILoadGroup_AddRequest(This->load_group, + (nsIRequest*)NSCHANNEL(This), NULL); + + if(NS_FAILED(nsres)) + ERR("AddRequest failed:%08lx\n", nsres); + } + return WINE_NS_LOAD_FROM_MONIKER; + } }else { BOOL cont = before_async_open(This, container); nsIWebBrowserChrome_Release(NSWBCHROME(container)); @@ -673,6 +682,14 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen bscallback->nscontext = aContext; } + if(This->load_group) { + nsres = nsILoadGroup_AddRequest(This->load_group, + (nsIRequest*)NSCHANNEL(This), NULL); + + if(NS_FAILED(nsres)) + ERR("AddRequest failed:%08lx\n", nsres); + } + start_binding(bscallback); IBindStatusCallback_Release(STATUSCLB(bscallback));