Jacek Caban : mshtml: Store IMoniker in BSCallback.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 9 10:37:24 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: aa760c8b1e3ad91064944ab527476157a8edd9d2
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=aa760c8b1e3ad91064944ab527476157a8edd9d2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Aug 9 16:37:48 2006 +0200
mshtml: Store IMoniker in BSCallback.
---
dlls/mshtml/mshtml_private.h | 7 +++++--
dlls/mshtml/navigate.c | 18 +++++++++++++-----
dlls/mshtml/persist.c | 4 ++--
3 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index e34c0fa..8f293f8 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -172,6 +172,8 @@ struct BSCallback {
nsIStreamListener *nslistener;
nsISupports *nscontext;
+ IMoniker *mon;
+
nsProtocolStream *nsstream;
};
@@ -308,8 +310,9 @@ void nsAString_Finish(nsAString*);
nsIInputStream *create_nsstream(const char*,PRInt32);
-BSCallback *create_bscallback(HTMLDocument*,LPCOLESTR);
-HRESULT start_binding(BSCallback*,IMoniker*);
+BSCallback *create_bscallback(HTMLDocument*,IMoniker*);
+HRESULT start_binding(BSCallback*);
+void create_hidden_hwnd(HTMLDocument*);
IHlink *Hlink_Create(void);
IHTMLSelectionObject *HTMLSelectionObject_Create(nsISelection*);
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 2b0b194..c37c475 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -131,7 +131,7 @@ static nsresult NSAPI nsInputStream_Read
PRUint32 written = 0;
nsresult nsres;
- FIXME("(%p)->(%p %p %ld %p)\n", This, aWriter, aClousure, aCount, _retval);
+ TRACE("(%p)->(%p %p %ld %p)\n", This, aWriter, aClousure, aCount, _retval);
if(!This->buf_size)
return S_OK;
@@ -246,6 +246,8 @@ static ULONG WINAPI BindStatusCallback_R
nsISupports_Release(This->nscontext);
if(This->nsstream)
nsIInputStream_Release(NSINSTREAM(This->nsstream));
+ if(This->mon)
+ IMoniker_Release(This->mon);
mshtml_free(This->headers);
mshtml_free(This);
}
@@ -564,7 +566,7 @@ static const IServiceProviderVtbl Servic
BSCServiceProvider_QueryService
};
-BSCallback *create_bscallback(HTMLDocument *doc, LPCOLESTR url)
+BSCallback *create_bscallback(HTMLDocument *doc, IMoniker *mon)
{
BSCallback *ret = mshtml_alloc(sizeof(BSCallback));
@@ -582,6 +584,10 @@ BSCallback *create_bscallback(HTMLDocume
ret->nscontext = NULL;
ret->nsstream = NULL;
+ if(mon)
+ IMoniker_AddRef(mon);
+ ret->mon = mon;
+
return ret;
}
@@ -663,7 +669,7 @@ void hlink_frame_navigate(HTMLDocument *
IMoniker *mon;
IHlink *hlink;
- callback = create_bscallback(doc, uri);
+ callback = create_bscallback(doc, NULL);
if(post_data_stream) {
parse_post_data(post_data_stream, &callback->headers, &callback->post_data,
@@ -692,7 +698,7 @@ void hlink_frame_navigate(HTMLDocument *
}
-HRESULT start_binding(BSCallback *bscallback, IMoniker *mon)
+HRESULT start_binding(BSCallback *bscallback)
{
IStream *str = NULL;
IBindCtx *bctx;
@@ -704,7 +710,7 @@ HRESULT start_binding(BSCallback *bscall
return hres;
}
- hres = IMoniker_BindToStorage(mon, bctx, NULL, &IID_IStream, (void**)&str);
+ hres = IMoniker_BindToStorage(bscallback->mon, bctx, NULL, &IID_IStream, (void**)&str);
IBindCtx_Release(bctx);
if(FAILED(hres)) {
WARN("BindToStorage failed: %08lx\n", hres);
@@ -714,5 +720,7 @@ HRESULT start_binding(BSCallback *bscall
if(str)
IStream_Release(str);
+ IMoniker_Release(bscallback->mon);
+ bscallback->mon = NULL;
return S_OK;
}
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index d935aaf..d6a49f5 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -215,7 +215,7 @@ static HRESULT WINAPI PersistMoniker_Loa
}
}
- bscallback = create_bscallback(This, url);
+ bscallback = create_bscallback(This, pimkName);
if(This->nscontainer) {
nsIInputStream *post_data_stream = get_post_data_stream(pibc);
@@ -249,7 +249,7 @@ static HRESULT WINAPI PersistMoniker_Loa
if(pibc)
FIXME("not supported pibc\n");
- hres = start_binding(bscallback, pimkName);
+ hres = start_binding(bscallback);
IBindStatusCallback_Release(STATUSCLB(bscallback));
CoTaskMemFree(url);
More information about the wine-cvs
mailing list