urlmon: Added IBinding::Abort implementation.

This commit is contained in:
Jacek Caban 2010-10-06 21:35:53 +02:00 committed by Alexandre Julliard
parent f7910c9304
commit 1db24bedfc

View file

@ -882,8 +882,19 @@ static ULONG WINAPI Binding_Release(IBinding *iface)
static HRESULT WINAPI Binding_Abort(IBinding *iface)
{
Binding *This = BINDING_THIS(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
HRESULT hres;
TRACE("(%p)\n", This);
if(This->state & BINDING_ABORTED)
return E_FAIL;
hres = IInternetProtocol_Abort(This->protocol, E_ABORT, ERROR_SUCCESS);
if(FAILED(hres))
return hres;
This->state |= BINDING_ABORTED;
return S_OK;
}
static HRESULT WINAPI Binding_Suspend(IBinding *iface)
@ -1053,7 +1064,7 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
TRACE("(%p)->(%d %u %u)\n", This, bscf, progress, progress_max);
if(This->download_state == END_DOWNLOAD || (This->state & BINDING_STOPPED))
if(This->download_state == END_DOWNLOAD || (This->state & (BINDING_STOPPED|BINDING_ABORTED)))
return;
if(This->stgmed_buf->file != INVALID_HANDLE_VALUE)
@ -1081,6 +1092,9 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
BINDSTATUS_DOWNLOADINGDATA, This->url);
}
if(This->state & (BINDING_STOPPED|BINDING_ABORTED))
return;
if(This->to_object) {
if(!(This->state & BINDING_OBJAVAIL)) {
IBinding_AddRef(BINDING(This));