Module: wine Branch: master Commit: fdf21a53a279979a2e41750c0f48b253ff465236 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fdf21a53a279979a2e41750c0f...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Oct 20 15:10:30 2017 +0200
mshtml: Don't use fire_event to dispatch script readystatechange event.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/script.c | 18 +++++++++++++++--- dlls/mshtml/tests/events.html | 1 + 2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index da0aa54..3b4fcc5 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -724,6 +724,19 @@ static ScriptHost *create_script_host(HTMLInnerWindow *window, const GUID *guid) return ret; }
+static void dispatch_script_readystatechange_event(HTMLScriptElement *script) +{ + DOMEvent *event; + HRESULT hres; + + hres = create_document_event(script->element.node.doc, EVENTID_READYSTATECHANGE, &event); + if(FAILED(hres)) + return; + + fire_event_obj(&script->element.node.event_target, event); + IDOMEvent_Release(&event->IDOMEvent_iface); +} + typedef struct { task_t header; HTMLScriptElement *elem; @@ -737,7 +750,7 @@ static void fire_readystatechange_proc(task_t *_task) return;
task->elem->pending_readystatechange_event = FALSE; - fire_event(task->elem->element.node.doc, EVENTID_READYSTATECHANGE, FALSE, &task->elem->element.node.event_target, NULL); + dispatch_script_readystatechange_event(task->elem); }
static void fire_readystatechange_task_destr(task_t *_task) @@ -772,8 +785,7 @@ static void set_script_elem_readystate(HTMLScriptElement *script_elem, READYSTAT script_elem->pending_readystatechange_event = TRUE; }else { script_elem->pending_readystatechange_event = FALSE; - fire_event(script_elem->element.node.doc, EVENTID_READYSTATECHANGE, FALSE, - &script_elem->element.node.event_target, NULL); + dispatch_script_readystatechange_event(script_elem); } } } diff --git a/dlls/mshtml/tests/events.html b/dlls/mshtml/tests/events.html index 9e27491..4172e30 100644 --- a/dlls/mshtml/tests/events.html +++ b/dlls/mshtml/tests/events.html @@ -123,6 +123,7 @@ function test_insert_script() {
var readystatechange_log = ""; e.onreadystatechange = function() { + ok(window.event.srcElement === e, "srcElement != e"); readystatechange_log += "," + e.readyState; ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); if(e.readyState === "complete") {