static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) { BindStatusCallback *This = BINDSC_THIS(iface); TRACE("(%p)->(%d %d %d %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, debugstr_w(szStatusText)); switch(ulStatusCode) { case BINDSTATUS_BEGINDOWNLOADDATA: set_status_text(This, szStatusText); /* FIXME: "Start downloading from site: %s" */ return S_OK; case BINDSTATUS_ENDDOWNLOADDATA: set_status_text(This, szStatusText); /* FIXME: "Downloading from site: %s" */ return S_OK; case BINDSTATUS_CLASSIDAVAILABLE: case BINDSTATUS_MIMETYPEAVAILABLE: case BINDSTATUS_BEGINSYNCOPERATION: case BINDSTATUS_ENDSYNCOPERATION: return S_OK; default: FIXME("status code %u\n", ulStatusCode); } return E_NOTIMPL; }
static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) { BindStatusCallback *This = BINDSC_THIS(iface); FIXME("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); return E_NOTIMPL; }
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority) { BindStatusCallback *This = BINDSC_THIS(iface); FIXME("(%p)->(%p)\n", This, pnPriority); return E_NOTIMPL; }
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved) { BindStatusCallback *This = BINDSC_THIS(iface); FIXME("(%p)->(%d)\n", This, reserved); return E_NOTIMPL; }
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv) { BindStatusCallback *This = BINDSC_THIS(iface); *ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = BINDSC(This); }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv); *ppv = BINDSC(This); }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv); *ppv = HTTPNEG(This); } if(*ppv) { IBindStatusCallback_AddRef(BINDSC(This)); return S_OK; } WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); return E_NOINTERFACE; }
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind) { BindStatusCallback *This = BINDSC_THIS(iface); TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); return S_OK; }
static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface) { BindStatusCallback *This = BINDSC_THIS(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); return ref; }
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk) { BindStatusCallback *This = BINDSC_THIS(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); return dochost_object_available(This->doc_host, punk); }
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError) { BindStatusCallback *This = BINDSC_THIS(iface); TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); set_status_text(This, emptyW); if(This->doc_host) { IOleClientSite_Release(CLIENTSITE(This->doc_host)); This->doc_host = NULL; } return S_OK; }
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface) { BindStatusCallback *This = BINDSC_THIS(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); if(!ref) { if(This->doc_host) IOleClientSite_Release(CLIENTSITE(This->doc_host)); if(This->post_data) GlobalFree(This->post_data); SysFreeString(This->headers); heap_free(This->url); heap_free(This); } return ref; }
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo) { BindStatusCallback *This = BINDSC_THIS(iface); TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); *grfBINDF = BINDF_ASYNCHRONOUS; if(This->post_data) { pbindinfo->dwBindVerb = BINDVERB_POST; pbindinfo->stgmedData.tymed = TYMED_HGLOBAL; pbindinfo->stgmedData.u.hGlobal = This->post_data; pbindinfo->cbstgmedData = This->post_data_len; pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)BINDSC(This); IBindStatusCallback_AddRef(BINDSC(This)); } return S_OK; }
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk) { BindStatusCallback *This = BINDSC_THIS(iface); task_header_t *task; IOleObject *oleobj; HRESULT hres; TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); IUnknown_AddRef(punk); This->doc_host->document = punk; hres = IUnknown_QueryInterface(punk, &IID_IOleObject, (void**)&oleobj); if(SUCCEEDED(hres)) { CLSID clsid; hres = IOleObject_GetUserClassID(oleobj, &clsid); if(SUCCEEDED(hres)) TRACE("Got clsid %s\n", IsEqualGUID(&clsid, &CLSID_HTMLDocument) ? "CLSID_HTMLDocument" : debugstr_guid(&clsid)); hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(This->doc_host)); if(FAILED(hres)) FIXME("SetClientSite failed: %08x\n", hres); IOleObject_Release(oleobj); }else { FIXME("Could not get IOleObject iface: %08x\n", hres); } /* FIXME: Call SetAdvise */ /* FIXME: Call Invoke(DISPID_READYSTATE) */ task = heap_alloc(sizeof(*task)); push_dochost_task(This->doc_host, task, object_available_proc, FALSE); return S_OK; }