Jacek Caban : mshtml: Don' t use fire_event to dispatch script readystatechange event.
Alexandre Julliard
julliard at winehq.org
Fri Oct 20 15:09:37 CDT 2017
Module: wine
Branch: master
Commit: fdf21a53a279979a2e41750c0f48b253ff465236
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fdf21a53a279979a2e41750c0f48b253ff465236
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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") {
More information about the wine-cvs
mailing list