Module: wine Branch: master Commit: 228c824d483c6a9b782f02a56ff0ff28bfdfc6ad URL: https://gitlab.winehq.org/wine/wine/-/commit/228c824d483c6a9b782f02a56ff0ff2...
Author: Gabriel Ivăncescu gabrielopcode@gmail.com Date: Mon Jul 25 21:54:04 2022 +0300
mshtml: Implement ProgressEvent's total prop.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
---
dlls/mshtml/htmlevent.c | 12 ++++++++++-- dlls/mshtml/tests/xhr.js | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 55511f3ac79..24c107487af 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -2523,8 +2523,16 @@ static HRESULT WINAPI DOMProgressEvent_get_loaded(IDOMProgressEvent *iface, ULON static HRESULT WINAPI DOMProgressEvent_get_total(IDOMProgressEvent *iface, ULONGLONG *p) { DOMProgressEvent *This = impl_from_IDOMProgressEvent(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + cpp_bool b; + + TRACE("(%p)->(%p)\n", This, p); + + if(NS_FAILED(nsIDOMProgressEvent_GetLengthComputable(This->nsevent, &b)) || !b) { + *p = ~0; + return S_OK; + } + + return map_nsresult(nsIDOMProgressEvent_GetTotal(This->nsevent, p)); }
static HRESULT WINAPI DOMProgressEvent_initProgressEvent(IDOMProgressEvent *iface, BSTR type, VARIANT_BOOL can_bubble, diff --git a/dlls/mshtml/tests/xhr.js b/dlls/mshtml/tests/xhr.js index c60107c556f..cc8a03dadb4 100644 --- a/dlls/mshtml/tests/xhr.js +++ b/dlls/mshtml/tests/xhr.js @@ -49,6 +49,7 @@ function test_xhr() { ok(props[i] in e, props[i] + " not available in loadstart"); ok(e.lengthComputable === false, "lengthComputable in loadstart = " + e.lengthComputable); ok(e.loaded === 0, "loaded in loadstart = " + e.loaded); + ok(e.total === 18446744073709552000, "total in loadstart = " + e.total); loadstart = true; }; xhr.onloadend = function(e) { @@ -60,6 +61,8 @@ function test_xhr() { ok(e.lengthComputable === true, "lengthComputable in loadend = " + e.lengthComputable); todo_wine. ok(e.loaded === xml.length, "loaded in loadend = " + e.loaded); + todo_wine. + ok(e.total === xml.length, "total in loadend = " + e.total); next_test(); }; } @@ -179,6 +182,7 @@ function test_timeout() { if(v >= 10) { ok(e.lengthComputable === false, "lengthComputable = " + e.lengthComputable); ok(e.loaded === 0, "loaded = " + e.loaded); + ok(e.total === 18446744073709552000, "total = " + e.total); } next_test(); }