[1/4] msxml3: Move methods implementation to separate functions, so it can be reused
Nikolay Sivov
nsivov at codeweavers.com
Mon May 21 04:15:33 CDT 2012
Move methods implementation to separate functions, so it can be reused
-------------- next part --------------
>From 512a0cce8e808875fdd418651a1157d2c59dceae Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sat, 19 May 2012 11:23:39 +0400
Subject: [PATCH 2/8] Move methods implementation to separate functions, so it can be reused
---
dlls/msxml3/httprequest.c | 597 +++++++++++++++++++++++++--------------------
1 files changed, 327 insertions(+), 270 deletions(-)
diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index 99b7672..9c77b0c 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -735,169 +735,16 @@ static HRESULT BindStatusCallback_create(httprequest* This, BindStatusCallback *
return hr;
}
-static HRESULT WINAPI httprequest_QueryInterface(IXMLHTTPRequest *iface, REFIID riid, void **ppvObject)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
-
- if ( IsEqualGUID( riid, &IID_IXMLHTTPRequest) ||
- IsEqualGUID( riid, &IID_IDispatch) ||
- IsEqualGUID( riid, &IID_IUnknown) )
- {
- *ppvObject = iface;
- }
- else if (IsEqualGUID(&IID_IObjectWithSite, riid))
- {
- *ppvObject = &This->IObjectWithSite_iface;
- }
- else if (IsEqualGUID(&IID_IObjectSafety, riid))
- {
- *ppvObject = &This->IObjectSafety_iface;
- }
- else
- {
- TRACE("Unsupported interface %s\n", debugstr_guid(riid));
- *ppvObject = NULL;
- return E_NOINTERFACE;
- }
-
- IXMLHTTPRequest_AddRef( iface );
-
- return S_OK;
-}
-
-static ULONG WINAPI httprequest_AddRef(IXMLHTTPRequest *iface)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- ULONG ref = InterlockedIncrement( &This->ref );
- TRACE("(%p)->(%u)\n", This, ref );
- return ref;
-}
-
-static ULONG WINAPI httprequest_Release(IXMLHTTPRequest *iface)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- ULONG ref = InterlockedDecrement( &This->ref );
-
- TRACE("(%p)->(%u)\n", This, ref );
-
- if ( ref == 0 )
- {
- struct httpheader *header, *header2;
-
- if (This->site)
- IUnknown_Release( This->site );
-
- SysFreeString(This->custom);
- SysFreeString(This->siteurl);
- SysFreeString(This->url);
- SysFreeString(This->user);
- SysFreeString(This->password);
-
- /* request headers */
- LIST_FOR_EACH_ENTRY_SAFE(header, header2, &This->reqheaders, struct httpheader, entry)
- {
- list_remove(&header->entry);
- SysFreeString(header->header);
- SysFreeString(header->value);
- heap_free(header);
- }
- /* response headers */
- free_response_headers(This);
- SysFreeString(This->status_text);
-
- /* detach callback object */
- BindStatusCallback_Detach(This->bsc);
-
- if (This->sink) IDispatch_Release(This->sink);
-
- heap_free( This );
- }
-
- return ref;
-}
-
-static HRESULT WINAPI httprequest_GetTypeInfoCount(IXMLHTTPRequest *iface, UINT *pctinfo)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
-
- TRACE("(%p)->(%p)\n", This, pctinfo);
-
- *pctinfo = 1;
-
- return S_OK;
-}
-
-static HRESULT WINAPI httprequest_GetTypeInfo(IXMLHTTPRequest *iface, UINT iTInfo,
- LCID lcid, ITypeInfo **ppTInfo)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
-
- TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
-
- return get_typeinfo(IXMLHTTPRequest_tid, ppTInfo);
-}
-
-static HRESULT WINAPI httprequest_GetIDsOfNames(IXMLHTTPRequest *iface, REFIID riid,
- LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- ITypeInfo *typeinfo;
- HRESULT hr;
-
- TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
- lcid, rgDispId);
-
- if(!rgszNames || cNames == 0 || !rgDispId)
- return E_INVALIDARG;
-
- hr = get_typeinfo(IXMLHTTPRequest_tid, &typeinfo);
- if(SUCCEEDED(hr))
- {
- hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
- ITypeInfo_Release(typeinfo);
- }
-
- return hr;
-}
-
-static HRESULT WINAPI httprequest_Invoke(IXMLHTTPRequest *iface, DISPID dispIdMember, REFIID riid,
- LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
- EXCEPINFO *pExcepInfo, UINT *puArgErr)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- ITypeInfo *typeinfo;
- HRESULT hr;
-
- TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
- lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
-
- hr = get_typeinfo(IXMLHTTPRequest_tid, &typeinfo);
- if(SUCCEEDED(hr))
- {
- hr = ITypeInfo_Invoke(typeinfo, &This->IXMLHTTPRequest_iface, dispIdMember, wFlags,
- pDispParams, pVarResult, pExcepInfo, puArgErr);
- ITypeInfo_Release(typeinfo);
- }
-
- return hr;
-}
-
-static HRESULT WINAPI httprequest_open(IXMLHTTPRequest *iface, BSTR method, BSTR url,
+static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
VARIANT async, VARIANT user, VARIANT password)
{
static const WCHAR MethodGetW[] = {'G','E','T',0};
static const WCHAR MethodPutW[] = {'P','U','T',0};
static const WCHAR MethodPostW[] = {'P','O','S','T',0};
static const WCHAR MethodDeleteW[] = {'D','E','L','E','T','E',0};
-
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
VARIANT str, is_async;
HRESULT hr;
- TRACE("(%p)->(%s %s %s)\n", This, debugstr_w(method), debugstr_w(url),
- debugstr_variant(&async));
-
if (!method || !url) return E_INVALIDARG;
/* free previously set data */
@@ -966,13 +813,10 @@ static HRESULT WINAPI httprequest_open(IXMLHTTPRequest *iface, BSTR method, BSTR
return S_OK;
}
-static HRESULT WINAPI httprequest_setRequestHeader(IXMLHTTPRequest *iface, BSTR header, BSTR value)
+static HRESULT httprequest_setRequestHeader(httprequest *This, BSTR header, BSTR value)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
struct httpheader *entry;
- TRACE("(%p)->(%s %s)\n", This, debugstr_w(header), debugstr_w(value));
-
if (!header || !*header) return E_INVALIDARG;
if (This->state != READYSTATE_LOADING) return E_FAIL;
if (!value) return E_INVALIDARG;
@@ -1010,13 +854,10 @@ static HRESULT WINAPI httprequest_setRequestHeader(IXMLHTTPRequest *iface, BSTR
return S_OK;
}
-static HRESULT WINAPI httprequest_getResponseHeader(IXMLHTTPRequest *iface, BSTR header, BSTR *value)
+static HRESULT httprequest_getResponseHeader(httprequest *This, BSTR header, BSTR *value)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
struct httpheader *entry;
- TRACE("(%p)->(%s %p)\n", This, debugstr_w(header), value);
-
if (!header || !value) return E_INVALIDARG;
if (This->raw_respheaders && list_empty(&This->respheaders))
@@ -1049,12 +890,8 @@ static HRESULT WINAPI httprequest_getResponseHeader(IXMLHTTPRequest *iface, BSTR
return S_FALSE;
}
-static HRESULT WINAPI httprequest_getAllResponseHeaders(IXMLHTTPRequest *iface, BSTR *respheaders)
+static HRESULT httprequest_getAllResponseHeaders(httprequest *This, BSTR *respheaders)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
-
- TRACE("(%p)->(%p)\n", This, respheaders);
-
if (!respheaders) return E_INVALIDARG;
*respheaders = SysAllocString(This->raw_respheaders);
@@ -1062,14 +899,11 @@ static HRESULT WINAPI httprequest_getAllResponseHeaders(IXMLHTTPRequest *iface,
return S_OK;
}
-static HRESULT WINAPI httprequest_send(IXMLHTTPRequest *iface, VARIANT body)
+static HRESULT httprequest_send(httprequest *This, VARIANT body)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
BindStatusCallback *bsc = NULL;
HRESULT hr;
- TRACE("(%p)->(%s)\n", This, debugstr_variant(&body));
-
if (This->state != READYSTATE_LOADING) return E_FAIL;
hr = BindStatusCallback_create(This, &bsc, &body);
@@ -1081,12 +915,8 @@ static HRESULT WINAPI httprequest_send(IXMLHTTPRequest *iface, VARIANT body)
return hr;
}
-static HRESULT WINAPI httprequest_abort(IXMLHTTPRequest *iface)
+static HRESULT httprequest_abort(httprequest *This)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
-
- TRACE("(%p)\n", This);
-
BindStatusCallback_Detach(This->bsc);
This->bsc = NULL;
@@ -1095,12 +925,8 @@ static HRESULT WINAPI httprequest_abort(IXMLHTTPRequest *iface)
return S_OK;
}
-static HRESULT WINAPI httprequest_get_status(IXMLHTTPRequest *iface, LONG *status)
+static HRESULT httprequest_get_status(httprequest *This, LONG *status)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
-
- TRACE("(%p)->(%p)\n", This, status);
-
if (!status) return E_INVALIDARG;
if (This->state != READYSTATE_COMPLETE) return E_FAIL;
@@ -1109,12 +935,8 @@ static HRESULT WINAPI httprequest_get_status(IXMLHTTPRequest *iface, LONG *statu
return S_OK;
}
-static HRESULT WINAPI httprequest_get_statusText(IXMLHTTPRequest *iface, BSTR *status)
+static HRESULT httprequest_get_statusText(httprequest *This, BSTR *status)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
-
- TRACE("(%p)->(%p)\n", This, status);
-
if (!status) return E_INVALIDARG;
if (This->state != READYSTATE_COMPLETE) return E_FAIL;
@@ -1123,44 +945,11 @@ static HRESULT WINAPI httprequest_get_statusText(IXMLHTTPRequest *iface, BSTR *s
return S_OK;
}
-static HRESULT WINAPI httprequest_get_responseXML(IXMLHTTPRequest *iface, IDispatch **body)
+static HRESULT httprequest_get_responseText(httprequest *This, BSTR *body)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- IXMLDOMDocument3 *doc;
- HRESULT hr;
- BSTR str;
-
- TRACE("(%p)->(%p)\n", This, body);
-
- if (!body) return E_INVALIDARG;
- if (This->state != READYSTATE_COMPLETE) return E_FAIL;
-
- hr = DOMDocument_create(MSXML_DEFAULT, NULL, (void**)&doc);
- if (hr != S_OK) return hr;
-
- hr = IXMLHTTPRequest_get_responseText(iface, &str);
- if (hr == S_OK)
- {
- VARIANT_BOOL ok;
-
- hr = IXMLDOMDocument3_loadXML(doc, str, &ok);
- SysFreeString(str);
- }
-
- IXMLDOMDocument3_QueryInterface(doc, &IID_IDispatch, (void**)body);
- IXMLDOMDocument3_Release(doc);
-
- return hr;
-}
-
-static HRESULT WINAPI httprequest_get_responseText(IXMLHTTPRequest *iface, BSTR *body)
-{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
HGLOBAL hglobal;
HRESULT hr;
- TRACE("(%p)->(%p)\n", This, body);
-
if (!body) return E_INVALIDARG;
if (This->state != READYSTATE_COMPLETE) return E_FAIL;
@@ -1206,13 +995,37 @@ static HRESULT WINAPI httprequest_get_responseText(IXMLHTTPRequest *iface, BSTR
return hr;
}
-static HRESULT WINAPI httprequest_get_responseBody(IXMLHTTPRequest *iface, VARIANT *body)
+static HRESULT httprequest_get_responseXML(httprequest *This, IDispatch **body)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
- HGLOBAL hglobal;
+ IXMLDOMDocument3 *doc;
HRESULT hr;
+ BSTR str;
- TRACE("(%p)->(%p)\n", This, body);
+ if (!body) return E_INVALIDARG;
+ if (This->state != READYSTATE_COMPLETE) return E_FAIL;
+
+ hr = DOMDocument_create(MSXML_DEFAULT, NULL, (void**)&doc);
+ if (hr != S_OK) return hr;
+
+ hr = httprequest_get_responseText(This, &str);
+ if (hr == S_OK)
+ {
+ VARIANT_BOOL ok;
+
+ hr = IXMLDOMDocument3_loadXML(doc, str, &ok);
+ SysFreeString(str);
+ }
+
+ IXMLDOMDocument3_QueryInterface(doc, &IID_IDispatch, (void**)body);
+ IXMLDOMDocument3_Release(doc);
+
+ return hr;
+}
+
+static HRESULT httprequest_get_responseBody(httprequest *This, VARIANT *body)
+{
+ HGLOBAL hglobal;
+ HRESULT hr;
if (!body) return E_INVALIDARG;
V_VT(body) = VT_EMPTY;
@@ -1259,15 +1072,12 @@ static HRESULT WINAPI httprequest_get_responseBody(IXMLHTTPRequest *iface, VARIA
return hr;
}
-static HRESULT WINAPI httprequest_get_responseStream(IXMLHTTPRequest *iface, VARIANT *body)
+static HRESULT httprequest_get_responseStream(httprequest *This, VARIANT *body)
{
- httprequest *This = impl_from_IXMLHTTPRequest( iface );
LARGE_INTEGER move;
IStream *stream;
HRESULT hr;
- TRACE("(%p)->(%p)\n", This, body);
-
if (!body) return E_INVALIDARG;
V_VT(body) = VT_EMPTY;
@@ -1284,53 +1094,297 @@ static HRESULT WINAPI httprequest_get_responseStream(IXMLHTTPRequest *iface, VAR
return hr;
}
-static HRESULT WINAPI httprequest_get_readyState(IXMLHTTPRequest *iface, LONG *state)
+static HRESULT httprequest_get_readyState(httprequest *This, LONG *state)
+{
+ if (!state) return E_INVALIDARG;
+
+ *state = This->state;
+ return S_OK;
+}
+
+static HRESULT httprequest_put_onreadystatechange(httprequest *This, IDispatch *sink)
+{
+ if (This->sink) IDispatch_Release(This->sink);
+ if ((This->sink = sink)) IDispatch_AddRef(This->sink);
+
+ return S_OK;
+}
+
+static void httprequest_release(httprequest *This)
+{
+ struct httpheader *header, *header2;
+
+ if (This->site)
+ IUnknown_Release( This->site );
+
+ SysFreeString(This->custom);
+ SysFreeString(This->siteurl);
+ SysFreeString(This->url);
+ SysFreeString(This->user);
+ SysFreeString(This->password);
+
+ /* request headers */
+ LIST_FOR_EACH_ENTRY_SAFE(header, header2, &This->reqheaders, struct httpheader, entry)
+ {
+ list_remove(&header->entry);
+ SysFreeString(header->header);
+ SysFreeString(header->value);
+ heap_free(header);
+ }
+ /* response headers */
+ free_response_headers(This);
+ SysFreeString(This->status_text);
+
+ /* detach callback object */
+ BindStatusCallback_Detach(This->bsc);
+
+ if (This->sink) IDispatch_Release(This->sink);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_QueryInterface(IXMLHTTPRequest *iface, REFIID riid, void **ppvObject)
{
httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
- TRACE("(%p)->(%p)\n", This, state);
+ if ( IsEqualGUID( riid, &IID_IXMLHTTPRequest) ||
+ IsEqualGUID( riid, &IID_IDispatch) ||
+ IsEqualGUID( riid, &IID_IUnknown) )
+ {
+ *ppvObject = iface;
+ }
+ else if (IsEqualGUID(&IID_IObjectWithSite, riid))
+ {
+ *ppvObject = &This->IObjectWithSite_iface;
+ }
+ else if (IsEqualGUID(&IID_IObjectSafety, riid))
+ {
+ *ppvObject = &This->IObjectSafety_iface;
+ }
+ else
+ {
+ TRACE("Unsupported interface %s\n", debugstr_guid(riid));
+ *ppvObject = NULL;
+ return E_NOINTERFACE;
+ }
- if (!state) return E_INVALIDARG;
+ IXMLHTTPRequest_AddRef( iface );
- *state = This->state;
return S_OK;
}
-static HRESULT WINAPI httprequest_put_onreadystatechange(IXMLHTTPRequest *iface, IDispatch *sink)
+static ULONG WINAPI XMLHTTPRequest_AddRef(IXMLHTTPRequest *iface)
{
httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ ULONG ref = InterlockedIncrement( &This->ref );
+ TRACE("(%p)->(%u)\n", This, ref );
+ return ref;
+}
- TRACE("(%p)->(%p)\n", This, sink);
+static ULONG WINAPI XMLHTTPRequest_Release(IXMLHTTPRequest *iface)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ ULONG ref = InterlockedDecrement( &This->ref );
- if (This->sink) IDispatch_Release(This->sink);
- if ((This->sink = sink)) IDispatch_AddRef(This->sink);
+ TRACE("(%p)->(%u)\n", This, ref );
+
+ if ( ref == 0 )
+ {
+ httprequest_release( This );
+ heap_free( This );
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI XMLHTTPRequest_GetTypeInfoCount(IXMLHTTPRequest *iface, UINT *pctinfo)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+
+ TRACE("(%p)->(%p)\n", This, pctinfo);
+
+ *pctinfo = 1;
return S_OK;
}
+static HRESULT WINAPI XMLHTTPRequest_GetTypeInfo(IXMLHTTPRequest *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+
+ TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+ return get_typeinfo(IXMLHTTPRequest_tid, ppTInfo);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_GetIDsOfNames(IXMLHTTPRequest *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ ITypeInfo *typeinfo;
+ HRESULT hr;
+
+ TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+
+ if(!rgszNames || cNames == 0 || !rgDispId)
+ return E_INVALIDARG;
+
+ hr = get_typeinfo(IXMLHTTPRequest_tid, &typeinfo);
+ if(SUCCEEDED(hr))
+ {
+ hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+ ITypeInfo_Release(typeinfo);
+ }
+
+ return hr;
+}
+
+static HRESULT WINAPI XMLHTTPRequest_Invoke(IXMLHTTPRequest *iface, DISPID dispIdMember, REFIID riid,
+ LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
+ EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ ITypeInfo *typeinfo;
+ HRESULT hr;
+
+ TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+
+ hr = get_typeinfo(IXMLHTTPRequest_tid, &typeinfo);
+ if(SUCCEEDED(hr))
+ {
+ hr = ITypeInfo_Invoke(typeinfo, &This->IXMLHTTPRequest_iface, dispIdMember, wFlags,
+ pDispParams, pVarResult, pExcepInfo, puArgErr);
+ ITypeInfo_Release(typeinfo);
+ }
+
+ return hr;
+}
+
+static HRESULT WINAPI XMLHTTPRequest_open(IXMLHTTPRequest *iface, BSTR method, BSTR url,
+ VARIANT async, VARIANT user, VARIANT password)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%s %s %s)\n", This, debugstr_w(method), debugstr_w(url),
+ debugstr_variant(&async));
+ return httprequest_open(This, method, url, async, user, password);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_setRequestHeader(IXMLHTTPRequest *iface, BSTR header, BSTR value)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%s %s)\n", This, debugstr_w(header), debugstr_w(value));
+ return httprequest_setRequestHeader(This, header, value);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_getResponseHeader(IXMLHTTPRequest *iface, BSTR header, BSTR *value)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(header), value);
+ return httprequest_getResponseHeader(This, header, value);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_getAllResponseHeaders(IXMLHTTPRequest *iface, BSTR *respheaders)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, respheaders);
+ return httprequest_getAllResponseHeaders(This, respheaders);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_send(IXMLHTTPRequest *iface, VARIANT body)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%s)\n", This, debugstr_variant(&body));
+ return httprequest_send(This, body);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_abort(IXMLHTTPRequest *iface)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)\n", This);
+ return httprequest_abort(This);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_status(IXMLHTTPRequest *iface, LONG *status)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, status);
+ return httprequest_get_status(This, status);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_statusText(IXMLHTTPRequest *iface, BSTR *status)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, status);
+ return httprequest_get_statusText(This, status);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_responseXML(IXMLHTTPRequest *iface, IDispatch **body)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, body);
+ return httprequest_get_responseXML(This, body);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_responseText(IXMLHTTPRequest *iface, BSTR *body)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, body);
+ return httprequest_get_responseText(This, body);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_responseBody(IXMLHTTPRequest *iface, VARIANT *body)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, body);
+ return httprequest_get_responseBody(This, body);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_responseStream(IXMLHTTPRequest *iface, VARIANT *body)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, body);
+ return httprequest_get_responseStream(This, body);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_get_readyState(IXMLHTTPRequest *iface, LONG *state)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, state);
+ return httprequest_get_readyState(This, state);
+}
+
+static HRESULT WINAPI XMLHTTPRequest_put_onreadystatechange(IXMLHTTPRequest *iface, IDispatch *sink)
+{
+ httprequest *This = impl_from_IXMLHTTPRequest( iface );
+ TRACE("(%p)->(%p)\n", This, sink);
+ return httprequest_put_onreadystatechange(This, sink);
+}
+
static const struct IXMLHTTPRequestVtbl XMLHTTPRequestVtbl =
{
- httprequest_QueryInterface,
- httprequest_AddRef,
- httprequest_Release,
- httprequest_GetTypeInfoCount,
- httprequest_GetTypeInfo,
- httprequest_GetIDsOfNames,
- httprequest_Invoke,
- httprequest_open,
- httprequest_setRequestHeader,
- httprequest_getResponseHeader,
- httprequest_getAllResponseHeaders,
- httprequest_send,
- httprequest_abort,
- httprequest_get_status,
- httprequest_get_statusText,
- httprequest_get_responseXML,
- httprequest_get_responseText,
- httprequest_get_responseBody,
- httprequest_get_responseStream,
- httprequest_get_readyState,
- httprequest_put_onreadystatechange
+ XMLHTTPRequest_QueryInterface,
+ XMLHTTPRequest_AddRef,
+ XMLHTTPRequest_Release,
+ XMLHTTPRequest_GetTypeInfoCount,
+ XMLHTTPRequest_GetTypeInfo,
+ XMLHTTPRequest_GetIDsOfNames,
+ XMLHTTPRequest_Invoke,
+ XMLHTTPRequest_open,
+ XMLHTTPRequest_setRequestHeader,
+ XMLHTTPRequest_getResponseHeader,
+ XMLHTTPRequest_getAllResponseHeaders,
+ XMLHTTPRequest_send,
+ XMLHTTPRequest_abort,
+ XMLHTTPRequest_get_status,
+ XMLHTTPRequest_get_statusText,
+ XMLHTTPRequest_get_responseXML,
+ XMLHTTPRequest_get_responseText,
+ XMLHTTPRequest_get_responseBody,
+ XMLHTTPRequest_get_responseStream,
+ XMLHTTPRequest_get_readyState,
+ XMLHTTPRequest_put_onreadystatechange
};
/* IObjectWithSite */
@@ -1470,17 +1524,8 @@ static const IObjectSafetyVtbl ObjectSafetyVtbl = {
httprequest_Safety_SetInterfaceSafetyOptions
};
-HRESULT XMLHTTPRequest_create(IUnknown *pUnkOuter, void **ppObj)
+static void init_httprequest(httprequest *req)
{
- httprequest *req;
- HRESULT hr = S_OK;
-
- TRACE("(%p,%p)\n", pUnkOuter, ppObj);
-
- req = heap_alloc( sizeof (*req) );
- if( !req )
- return E_OUTOFMEMORY;
-
req->IXMLHTTPRequest_iface.lpVtbl = &XMLHTTPRequestVtbl;
req->IObjectWithSite_iface.lpVtbl = &ObjectWithSiteVtbl;
req->IObjectSafety_iface.lpVtbl = &ObjectSafetyVtbl;
@@ -1506,12 +1551,24 @@ HRESULT XMLHTTPRequest_create(IUnknown *pUnkOuter, void **ppObj)
req->site = NULL;
req->safeopt = 0;
+}
- *ppObj = &req->IXMLHTTPRequest_iface;
+HRESULT XMLHTTPRequest_create(IUnknown *outer, void **obj)
+{
+ httprequest *req;
- TRACE("returning iface %p\n", *ppObj);
+ TRACE("(%p, %p)\n", outer, obj);
- return hr;
+ req = heap_alloc( sizeof (*req) );
+ if( !req )
+ return E_OUTOFMEMORY;
+
+ init_httprequest(req);
+ *obj = &req->IXMLHTTPRequest_iface;
+
+ TRACE("returning iface %p\n", *obj);
+
+ return S_OK;
}
#else
--
1.5.6.5
More information about the wine-patches
mailing list