[PATCH 3/8] mshtml: Implement onprogress for XMLHttpRequest.

Gabriel Ivăncescu gabrielopcode at gmail.com
Mon Jun 6 07:24:11 CDT 2022


Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---

I tried to add tests but they seem unreliable, in that sometimes it doesn't
fire at all.

 dlls/mshtml/htmlevent.c      | 2 ++
 dlls/mshtml/htmlevent.h      | 1 +
 dlls/mshtml/xmlhttprequest.c | 9 +++++----
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 49392bf..cf0de22 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -175,6 +175,8 @@ static const event_info_t event_info[] = {
         EVENT_FIXME},
     {L"paste",             EVENT_TYPE_CLIPBOARD, DISPID_EVMETH_ONPASTE,
         EVENT_FIXME | EVENT_BUBBLES | EVENT_CANCELABLE},
+    {L"progress",          EVENT_TYPE_PROGRESS,  DISPID_EVPROP_PROGRESS,
+        EVENT_BIND_TO_TARGET},
     {L"readystatechange",  EVENT_TYPE_EVENT,     DISPID_EVMETH_ONREADYSTATECHANGE,
         0},
     {L"resize",            EVENT_TYPE_UIEVENT,   DISPID_EVMETH_ONRESIZE,
diff --git a/dlls/mshtml/htmlevent.h b/dlls/mshtml/htmlevent.h
index 58dbc43..3f399da 100644
--- a/dlls/mshtml/htmlevent.h
+++ b/dlls/mshtml/htmlevent.h
@@ -50,6 +50,7 @@ typedef enum {
     EVENTID_MOUSEWHEEL,
     EVENTID_MSTHUMBNAILCLICK,
     EVENTID_PASTE,
+    EVENTID_PROGRESS,
     EVENTID_READYSTATECHANGE,
     EVENTID_RESIZE,
     EVENTID_SCROLL,
diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c
index 54e84cf..b5973c3 100644
--- a/dlls/mshtml/xmlhttprequest.c
+++ b/dlls/mshtml/xmlhttprequest.c
@@ -97,6 +97,7 @@ static HRESULT return_nscstr(nsresult nsres, nsACString *nscstr, BSTR *p)
 static const eventid_t events[] = {
     EVENTID_READYSTATECHANGE,
     EVENTID_LOAD,
+    EVENTID_PROGRESS,
     EVENTID_ABORT,
     EVENTID_ERROR,
     EVENTID_TIMEOUT,
@@ -1001,18 +1002,18 @@ static HRESULT WINAPI HTMLXMLHttpRequest_private_put_onprogress(IWineXMLHttpRequ
 {
     HTMLXMLHttpRequest *This = impl_from_IWineXMLHttpRequestPrivate(iface);
 
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
 
-    return E_NOTIMPL;
+    return set_event_handler(&This->event_target, EVENTID_PROGRESS, &v);
 }
 
 static HRESULT WINAPI HTMLXMLHttpRequest_private_get_onprogress(IWineXMLHttpRequestPrivate *iface, VARIANT *p)
 {
     HTMLXMLHttpRequest *This = impl_from_IWineXMLHttpRequestPrivate(iface);
 
-    FIXME("(%p)->(%p)\n", This, p);
+    TRACE("(%p)->(%p)\n", This, p);
 
-    return E_NOTIMPL;
+    return get_event_handler(&This->event_target, EVENTID_PROGRESS, p);
 }
 
 static HRESULT WINAPI HTMLXMLHttpRequest_private_put_onloadstart(IWineXMLHttpRequestPrivate *iface, VARIANT v)
-- 
2.34.1




More information about the wine-devel mailing list