Module: wine Branch: master Commit: 5ae224dee81fcf4bb5ee76cf0980ac197c6748fb URL: http://source.winehq.org/git/wine.git/?a=commit;h=5ae224dee81fcf4bb5ee76cf09...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Apr 7 15:33:34 2016 +0200
mshtml: Added support for sending BSTR over IHTMLXMLHttpRequst::send.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/xmlhttprequest.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-)
diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c index d55570c..ada3b20 100644 --- a/dlls/mshtml/xmlhttprequest.c +++ b/dlls/mshtml/xmlhttprequest.c @@ -524,22 +524,37 @@ static HRESULT WINAPI HTMLXMLHttpRequest_open(IHTMLXMLHttpRequest *iface, BSTR b static HRESULT WINAPI HTMLXMLHttpRequest_send(IHTMLXMLHttpRequest *iface, VARIANT varBody) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); - nsresult nsres; + nsIWritableVariant *nsbody = NULL; + nsresult nsres = NS_OK;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&varBody));
switch(V_VT(&varBody)) { - case VT_NULL: - case VT_EMPTY: - case VT_ERROR: - break; - default: - FIXME("varBody(%s) unsupported\n", debugstr_variant(&varBody)); - return E_FAIL; - } + case VT_NULL: + case VT_EMPTY: + case VT_ERROR: + break; + case VT_BSTR: { + nsAString nsstr; + + nsbody = create_nsvariant(); + if(!nsbody) + return E_OUTOFMEMORY;
- nsres = nsIXMLHttpRequest_Send(This->nsxhr, NULL); + nsAString_InitDepend(&nsstr, V_BSTR(&varBody)); + nsres = nsIWritableVariant_SetAsAString(nsbody, &nsstr); + nsAString_Finish(&nsstr); + break; + } + default: + FIXME("unsupported body type %s\n", debugstr_variant(&varBody)); + return E_NOTIMPL; + }
+ if(NS_SUCCEEDED(nsres)) + nsres = nsIXMLHttpRequest_Send(This->nsxhr, (nsIVariant*)nsbody); + if(nsbody) + nsIWritableVariant_Release(nsbody); if(NS_FAILED(nsres)) { ERR("nsIXMLHttpRequest_Send failed: %08x\n", nsres); return E_FAIL;