static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mon) { IBindCtx *bindctx; VARIANT_BOOL cancel = VARIANT_FALSE; HRESULT hres; on_before_navigate2(This, bsc->url, bsc->post_data, bsc->post_data_len, bsc->headers, &cancel); if(cancel) { FIXME("Navigation canceled\n"); return S_OK; } if(This->document) deactivate_document(This); CreateAsyncBindCtx(0, BINDSC(bsc), 0, &bindctx); if(This->frame) IOleInPlaceFrame_EnableModeless(This->frame, FALSE); hres = bind_to_object(This, mon, bsc->url, bindctx, BINDSC(bsc)); if(This->frame) IOleInPlaceFrame_EnableModeless(This->frame, TRUE); IBindCtx_Release(bindctx); return hres; }
static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mon) { VARIANT_BOOL cancel = VARIANT_FALSE; SAFEARRAY *post_data = NULL; IBindCtx *bindctx; HRESULT hres; set_doc_state(This, READYSTATE_LOADING); if(bsc->post_data) { post_data = SafeArrayCreateVector(VT_UI1, 0, bsc->post_data_len); memcpy(post_data->pvData, post_data, bsc->post_data_len); } on_before_navigate2(This, bsc->url, post_data, bsc->headers, &cancel); if(post_data) SafeArrayDestroy(post_data); if(cancel) { FIXME("Navigation canceled\n"); return S_OK; } notify_download_state(This, TRUE); on_commandstate_change(This, CSC_NAVIGATEBACK, VARIANT_FALSE); on_commandstate_change(This, CSC_NAVIGATEFORWARD, VARIANT_FALSE); if(This->document) deactivate_document(This); CreateAsyncBindCtx(0, &bsc->IBindStatusCallback_iface, 0, &bindctx); if(This->frame) IOleInPlaceFrame_EnableModeless(This->frame, FALSE); hres = bind_to_object(This, mon, bsc->url, bindctx, &bsc->IBindStatusCallback_iface); if(This->frame) IOleInPlaceFrame_EnableModeless(This->frame, TRUE); IBindCtx_Release(bindctx); return hres; }
/****************************************************************************** * URLMoniker_BindToObject ******************************************************************************/ static HRESULT WINAPI URLMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppv) { URLMonikerImpl *This = (URLMonikerImpl *)iface; IRunningObjectTable *obj_tbl; HRESULT hres; TRACE("(%p)->(%p,%p,%s,%p): stub\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppv); hres = IBindCtx_GetRunningObjectTable(pbc, &obj_tbl); if(SUCCEEDED(hres)) { FIXME("use running object table\n"); IRunningObjectTable_Release(obj_tbl); } return bind_to_object(iface, This->URLName, pbc, riid, ppv); }
static HRESULT WINAPI URLMoniker_BindToObject(IMoniker *iface, IBindCtx* pbc, IMoniker *pmkToLeft, REFIID riid, void **ppv) { URLMoniker *This = impl_from_IMoniker(iface); IRunningObjectTable *obj_tbl; HRESULT hres; TRACE("(%p)->(%p,%p,%s,%p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppv); hres = IBindCtx_GetRunningObjectTable(pbc, &obj_tbl); if(SUCCEEDED(hres)) { FIXME("use running object table\n"); IRunningObjectTable_Release(obj_tbl); } if(!This->uri) { *ppv = NULL; return MK_E_SYNTAX; } return bind_to_object(&This->IMoniker_iface, This->uri, pbc, riid, ppv); }
static HRESULT WINAPI URLMoniker_BindToObject(IMoniker *iface, IBindCtx* pbc, IMoniker *pmkToLeft, REFIID riid, void **ppv) { URLMoniker *This = impl_from_IMoniker(iface); IRunningObjectTable *obj_tbl; HRESULT hres; TRACE("(%p)->(%p,%p,%s,%p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppv); hres = IBindCtx_GetRunningObjectTable(pbc, &obj_tbl); if(SUCCEEDED(hres)) { hres = IRunningObjectTable_IsRunning(obj_tbl, &This->IMoniker_iface); if(hres == S_OK) { IUnknown *unk = NULL; TRACE("Found in running object table\n"); hres = IRunningObjectTable_GetObject(obj_tbl, &This->IMoniker_iface, &unk); if(SUCCEEDED(hres)) { hres = IUnknown_QueryInterface(unk, riid, ppv); IUnknown_Release(unk); } IRunningObjectTable_Release(obj_tbl); return hres; } IRunningObjectTable_Release(obj_tbl); } if(!This->uri) { *ppv = NULL; return MK_E_SYNTAX; } return bind_to_object(&This->IMoniker_iface, This->uri, pbc, riid, ppv); }