Hans Leidekker : qmgr: Add IHttpNegotiate support to the bind status callback.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Jun 5 06:46:12 CDT 2015
Module: wine
Branch: master
Commit: 6aeeddbad79dfbab4f7981b7c641dba6fe5deb68
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6aeeddbad79dfbab4f7981b7c641dba6fe5deb68
Author: Hans Leidekker <hans at codeweavers.com>
Date: Fri Jun 5 10:34:44 2015 +0200
qmgr: Add IHttpNegotiate support to the bind status callback.
---
dlls/qmgr/file.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 68 insertions(+), 6 deletions(-)
diff --git a/dlls/qmgr/file.c b/dlls/qmgr/file.c
index 95dc55b..1ed34d3 100644
--- a/dlls/qmgr/file.c
+++ b/dlls/qmgr/file.c
@@ -238,6 +238,7 @@ static DWORD CALLBACK copyProgressCallback(LARGE_INTEGER totalSize,
typedef struct
{
IBindStatusCallback IBindStatusCallback_iface;
+ IHttpNegotiate IHttpNegotiate_iface;
BackgroundCopyFileImpl *file;
LONG ref;
} DLBindStatusCallback;
@@ -254,16 +255,24 @@ static HRESULT WINAPI DLBindStatusCallback_QueryInterface(
{
DLBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IBindStatusCallback))
+ TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IBindStatusCallback))
{
*ppvObject = &This->IBindStatusCallback_iface;
- IBindStatusCallback_AddRef(iface);
- return S_OK;
+ }
+ else if (IsEqualGUID(riid, &IID_IHttpNegotiate))
+ {
+ *ppvObject = &This->IHttpNegotiate_iface;
+ }
+ else
+ {
+ *ppvObject = NULL;
+ return E_NOINTERFACE;
}
- *ppvObject = NULL;
- return E_NOINTERFACE;
+ IBindStatusCallback_AddRef(iface);
+ return S_OK;
}
static ULONG WINAPI DLBindStatusCallback_AddRef(IBindStatusCallback *iface)
@@ -381,6 +390,58 @@ static const IBindStatusCallbackVtbl DLBindStatusCallback_Vtbl =
DLBindStatusCallback_OnObjectAvailable
};
+static inline DLBindStatusCallback *impl_from_IHttpNegotiate(IHttpNegotiate *iface)
+{
+ return CONTAINING_RECORD(iface, DLBindStatusCallback, IHttpNegotiate_iface);
+}
+
+static HRESULT WINAPI http_negotiate_QueryInterface(
+ IHttpNegotiate *iface, REFIID riid, void **ppv)
+{
+ DLBindStatusCallback *callback = impl_from_IHttpNegotiate(iface);
+ return IBindStatusCallback_QueryInterface(&callback->IBindStatusCallback_iface, riid, ppv);
+}
+
+static ULONG WINAPI http_negotiate_AddRef(
+ IHttpNegotiate *iface)
+{
+ DLBindStatusCallback *callback = impl_from_IHttpNegotiate(iface);
+ return IBindStatusCallback_AddRef(&callback->IBindStatusCallback_iface);
+}
+
+static ULONG WINAPI http_negotiate_Release(
+ IHttpNegotiate *iface)
+{
+ DLBindStatusCallback *callback = impl_from_IHttpNegotiate(iface);
+ return IBindStatusCallback_Release(&callback->IBindStatusCallback_iface);
+}
+
+static HRESULT WINAPI http_negotiate_BeginningTransaction(
+ IHttpNegotiate *iface, LPCWSTR url, LPCWSTR headers, DWORD reserved, LPWSTR *add_headers)
+{
+ DLBindStatusCallback *callback = impl_from_IHttpNegotiate(iface);
+ FIXME("(%p)->(%s %s %u %p)\n", callback, debugstr_w(url), debugstr_w(headers), reserved, add_headers);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI http_negotiate_OnResponse(
+ IHttpNegotiate *iface, DWORD code, LPCWSTR resp_headers, LPCWSTR req_headers, LPWSTR *add_reqheaders)
+{
+ DLBindStatusCallback *callback = impl_from_IHttpNegotiate(iface);
+ FIXME("(%p)->(%d %s %s %p)\n", callback, code, debugstr_w(resp_headers), debugstr_w(req_headers),
+ add_reqheaders);
+ return E_NOTIMPL;
+}
+
+static const IHttpNegotiateVtbl http_negotiate_vtbl =
+{
+ http_negotiate_QueryInterface,
+ http_negotiate_AddRef,
+ http_negotiate_Release,
+ http_negotiate_BeginningTransaction,
+ http_negotiate_OnResponse
+};
+
static DLBindStatusCallback *DLBindStatusCallbackConstructor(
BackgroundCopyFileImpl *file)
{
@@ -389,6 +450,7 @@ static DLBindStatusCallback *DLBindStatusCallbackConstructor(
return NULL;
This->IBindStatusCallback_iface.lpVtbl = &DLBindStatusCallback_Vtbl;
+ This->IHttpNegotiate_iface.lpVtbl = &http_negotiate_vtbl;
IBackgroundCopyFile2_AddRef(&file->IBackgroundCopyFile2_iface);
This->file = file;
This->ref = 1;
More information about the wine-cvs
mailing list