Jacek Caban : mshtml: Added support for sending BSTR over IHTMLXMLHttpRequst::send.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Apr 7 11:42:52 CDT 2016


Module: wine
Branch: master
Commit: 5ae224dee81fcf4bb5ee76cf0980ac197c6748fb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5ae224dee81fcf4bb5ee76cf0980ac197c6748fb

Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;




More information about the wine-cvs mailing list