Module: wine Branch: master Commit: de2192bbece698184fb5111392f9ec2603825b37 URL: https://gitlab.winehq.org/wine/wine/-/commit/de2192bbece698184fb5111392f9ec2...
Author: Gabriel Ivăncescu gabrielopcode@gmail.com Date: Mon Oct 31 18:27:37 2022 +0200
mshtml: Allow null or undefined func in addEventListener.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
---
dlls/mshtml/htmlevent.c | 3 +++ dlls/mshtml/tests/events.c | 2 ++ dlls/mshtml/tests/events.js | 15 +++++++++++++++ 3 files changed, 20 insertions(+)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index ebedff82564..7deb51ad1e9 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -4105,6 +4105,9 @@ static HRESULT WINAPI EventTarget_addEventListener(IEventTarget *iface, BSTR typ
TRACE("(%p)->(%s %p %x)\n", This, debugstr_w(type), function, capture);
+ if(!function) + return S_OK; + container = get_listener_container(This, type, TRUE); if(!container) return E_OUTOFMEMORY; diff --git a/dlls/mshtml/tests/events.c b/dlls/mshtml/tests/events.c index 1819bc6bdd9..b53851d61bf 100644 --- a/dlls/mshtml/tests/events.c +++ b/dlls/mshtml/tests/events.c @@ -1898,6 +1898,7 @@ static void test_onclick(IHTMLDocument2 *doc) VariantClear(&v);
if(document_mode >= 9) { + add_event_listener((IUnknown*)div, L"click", NULL, VARIANT_FALSE); add_event_listener((IUnknown*)div, L"click", (IDispatch*)&div_onclick_capture_obj, VARIANT_TRUE); add_event_listener((IUnknown*)div, L"click", (IDispatch*)&div_onclick_bubble_obj, VARIANT_FALSE); } @@ -2052,6 +2053,7 @@ static void test_onclick(IHTMLDocument2 *doc) doc_detach_event(doc, L"onclick", (IDispatch*)&doc_onclick_attached_obj);
if(document_mode >= 9) { + remove_event_listener((IUnknown*)div, L"click", NULL, VARIANT_FALSE); remove_event_listener((IUnknown*)div, L"click", (IDispatch*)&div_onclick_capture_obj, VARIANT_TRUE); remove_event_listener((IUnknown*)div, L"click", (IDispatch*)&div_onclick_bubble_obj, VARIANT_FALSE); } diff --git a/dlls/mshtml/tests/events.js b/dlls/mshtml/tests/events.js index 997e583ad20..156330e984b 100644 --- a/dlls/mshtml/tests/events.js +++ b/dlls/mshtml/tests/events.js @@ -198,6 +198,21 @@ sync_test("add_remove_listener", function() { calls = ""; div.click(); ok(calls === "", "calls = " + calls); + + /* test undefined function argument */ + div.addEventListener("click", undefined, false); + + calls = ""; + div.click(); + ok(calls === "", "calls = " + calls); + + div.addEventListener("click", listener, false); + div.removeEventListener("click", undefined); + + calls = ""; + div.click(); + ok(calls === "listener,", "calls = " + calls); + div.removeEventListener("click", listener); });
sync_test("event_phase", function() {