From 1a58d624bbf1ad7de2c6a885fedb7ffd5d79fef2 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 15 Jul 2024 14:13:15 +0200 Subject: [PATCH] mshtml: Use host object script bindings for XMLHttpRequest class. --- dlls/mshtml/htmlevent.c | 7 +++++++ dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/documentmode.js | 2 +- dlls/mshtml/xmlhttprequest.c | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 12e947fecd3..68f20607c7b 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -5139,6 +5139,13 @@ void EventTarget_Init(EventTarget *event_target, dispex_static_data_t *dispex_da wine_rb_init(&event_target->handler_map, event_id_cmp); } +void init_event_target(EventTarget *event_target, dispex_static_data_t *dispex_data, HTMLInnerWindow *script_global) +{ + init_dispatch(&event_target->dispex, dispex_data, script_global, dispex_compat_mode(&script_global->event_target.dispex)); + event_target->IEventTarget_iface.lpVtbl = &EventTargetVtbl; + wine_rb_init(&event_target->handler_map, event_id_cmp); +} + void traverse_event_target(EventTarget *event_target, nsCycleCollectionTraversalCallback *cb) { listener_container_t *iter; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index c7b4c972a31..0bce00762b7 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1247,6 +1247,7 @@ void HTMLDOMNode_Init(HTMLDocumentNode*,HTMLDOMNode*,nsIDOMNode*,dispex_static_d void HTMLElement_Init(HTMLElement*,HTMLDocumentNode*,nsIDOMElement*,dispex_static_data_t*); void EventTarget_Init(EventTarget*,dispex_static_data_t*,compat_mode_t); +void init_event_target(EventTarget*,dispex_static_data_t*,HTMLInnerWindow*); void *EventTarget_query_interface(EventTarget*,REFIID); void EventTarget_init_dispex_info(dispex_data_t*,compat_mode_t); diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 24cd27ce64b..867130aec3d 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -318,7 +318,7 @@ sync_test("builtin_toString", function() { test("textNode", document.createTextNode("testNode"), "Text", v < 9 ? "testNode" : null, true); test("textRange", txtRange, "TextRange"); test("window", window, "Window", "[object Window]", true); - test("xmlHttpRequest", new XMLHttpRequest(), "XMLHttpRequest", null, true); + test("xmlHttpRequest", new XMLHttpRequest(), "XMLHttpRequest"); if(v < 10) { test("namespaces", document.namespaces, "MSNamespaceInfoCollection"); } diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c index d5faf971a33..0ab7fba2862 100644 --- a/dlls/mshtml/xmlhttprequest.c +++ b/dlls/mshtml/xmlhttprequest.c @@ -1530,7 +1530,7 @@ static HRESULT WINAPI HTMLXMLHttpRequestFactory_create(IHTMLXMLHttpRequestFactor ret->IHTMLXMLHttpRequest2_iface.lpVtbl = &HTMLXMLHttpRequest2Vtbl; ret->IWineXMLHttpRequestPrivate_iface.lpVtbl = &WineXMLHttpRequestPrivateVtbl; ret->IProvideClassInfo2_iface.lpVtbl = &ProvideClassInfo2Vtbl; - EventTarget_Init(&ret->event_target, &HTMLXMLHttpRequest_dispex, This->window->doc->document_mode); + init_event_target(&ret->event_target, &HTMLXMLHttpRequest_dispex, This->window); /* Always register the handlers because we need them to track state */ event_listener->nsIDOMEventListener_iface.lpVtbl = &XMLHttpReqEventListenerVtbl;