Jacek Caban : mshtml: Added IHTMLXMLHttpRequest:: onreadystatechange property implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 22 07:44:58 CDT 2015


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Jun 21 13:05:11 2015 +0200

mshtml: Added IHTMLXMLHttpRequest::onreadystatechange property implementation.

---

 dlls/mshtml/xmlhttprequest.c | 39 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 34 insertions(+), 5 deletions(-)

diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c
index c3efbbc..4cb3fda 100644
--- a/dlls/mshtml/xmlhttprequest.c
+++ b/dlls/mshtml/xmlhttprequest.c
@@ -17,6 +17,7 @@
  */
 
 #include <stdarg.h>
+#include <assert.h>
 
 #define COBJMACROS
 
@@ -28,6 +29,7 @@
 #include "wine/debug.h"
 
 #include "mshtml_private.h"
+#include "htmlevent.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 
@@ -169,15 +171,19 @@ static HRESULT WINAPI HTMLXMLHttpRequest_get_statusText(IHTMLXMLHttpRequest *ifa
 static HRESULT WINAPI HTMLXMLHttpRequest_put_onreadystatechange(IHTMLXMLHttpRequest *iface, VARIANT v)
 {
     HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+    return set_event_handler(&This->event_target, EVENTID_READYSTATECHANGE, &v);
 }
 
 static HRESULT WINAPI HTMLXMLHttpRequest_get_onreadystatechange(IHTMLXMLHttpRequest *iface, VARIANT *p)
 {
     HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_event_handler(&This->event_target, EVENTID_READYSTATECHANGE, p);
 }
 
 static HRESULT WINAPI HTMLXMLHttpRequest_abort(IHTMLXMLHttpRequest *iface)
@@ -246,12 +252,35 @@ static const IHTMLXMLHttpRequestVtbl HTMLXMLHttpRequestVtbl = {
     HTMLXMLHttpRequest_setRequestHeader
 };
 
+static inline HTMLXMLHttpRequest *impl_from_DispatchEx(DispatchEx *iface)
+{
+    return CONTAINING_RECORD(iface, HTMLXMLHttpRequest, event_target.dispex);
+}
+
+static void HTMLXMLHttpRequest_bind_event(DispatchEx *dispex, int eid)
+{
+    HTMLXMLHttpRequest *This = impl_from_DispatchEx(dispex);
+
+    FIXME("(%p)\n", This);
+
+    assert(eid == EVENTID_READYSTATECHANGE);
+}
+
+static dispex_static_data_vtbl_t HTMLXMLHttpRequest_dispex_vtbl = {
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    HTMLXMLHttpRequest_bind_event
+};
+
 static const tid_t HTMLXMLHttpRequest_iface_tids[] = {
     IHTMLXMLHttpRequest_tid,
     0
 };
 static dispex_static_data_t HTMLXMLHttpRequest_dispex = {
-    NULL,
+    &HTMLXMLHttpRequest_dispex_vtbl,
     DispHTMLXMLHttpRequest_tid,
     NULL,
     HTMLXMLHttpRequest_iface_tids




More information about the wine-cvs mailing list