Module: wine Branch: refs/heads/master Commit: aa760c8b1e3ad91064944ab527476157a8edd9d2 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=aa760c8b1e3ad91064944ab5...
Author: Jacek Caban jacek@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);