From ee8c855f777153c0af27e60c58f933d68b37b90a Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sat, 3 Jun 2006 00:41:48 +0200 Subject: [PATCH] mshtml: Added begining binding code in IPersistMoniker::Load. --- dlls/mshtml/navigate.c | 25 +++++++++++++++++++++++++ dlls/mshtml/persist.c | 9 ++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index dc707269484..514f2bd2b68 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -491,3 +491,28 @@ void hlink_frame_navigate(HTMLDocument *doc, IHlinkFrame *hlink_frame, IMoniker_Release(mon); } + +HRESULT start_binding(BSCallback *bscallback, IMoniker *mon) +{ + IStream *str = NULL; + IBindCtx *bctx; + HRESULT hres; + + hres = CreateAsyncBindCtx(0, STATUSCLB(bscallback), NULL, &bctx); + if(FAILED(hres)) { + WARN("CreateAsyncBindCtx failed: %08lx\n", hres); + return hres; + } + + hres = IMoniker_BindToStorage(mon, bctx, NULL, &IID_IStream, (void**)&str); + IBindCtx_Release(bctx); + if(FAILED(hres)) { + WARN("BindToStorage failed: %08lx\n", hres); + return hres; + } + + if(str) + IStream_Release(str); + + return S_OK; +} diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index 55462ad61b8..71270914689 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -228,7 +228,12 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva if(post_data_stream) nsIInputStream_Release(post_data_stream); + if(!bscallback->nschannel) + ERR("bscallback->nschannel == NULL\n"); + if(NS_SUCCEEDED(nsres)) { + /* FIXME: don't return here (URL Moniker needs to be good enough) */ + IBindStatusCallback_Release(STATUSCLB(bscallback)); CoTaskMemFree(url); return S_OK; @@ -244,10 +249,12 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva if(pibc) FIXME("not supported pibc\n"); + hres = start_binding(bscallback, pimkName); + IBindStatusCallback_Release(STATUSCLB(bscallback)); CoTaskMemFree(url); - return S_OK; + return hres; } static HRESULT WINAPI PersistMoniker_Save(IPersistMoniker *iface, IMoniker *pimkName,