From 2a1aaa7e6cdba6c364a61e4da93ac05ad8589b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= Date: Thu, 19 May 2022 21:06:35 +0300 Subject: [PATCH] mshtml: Expose IHTMLDOMImplementation2 members in IE9+ modes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gabriel Ivăncescu Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/mshtml/omnavigator.c | 9 ++++++++- dlls/mshtml/tests/documentmode.js | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 9962cc20dc7..4385c4c5bab 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -299,6 +299,12 @@ static const IHTMLDOMImplementation2Vtbl HTMLDOMImplementation2Vtbl = { HTMLDOMImplementation2_hasFeature }; +static void HTMLDOMImplementation_init_dispex_info(dispex_data_t *info, compat_mode_t compat_mode) +{ + if(compat_mode >= COMPAT_MODE_IE9) + dispex_info_add_interface(info, IHTMLDOMImplementation2_tid, NULL); +} + static const tid_t HTMLDOMImplementation_iface_tids[] = { IHTMLDOMImplementation_tid, 0 @@ -307,7 +313,8 @@ static dispex_static_data_t HTMLDOMImplementation_dispex = { L"DOMImplementation", NULL, DispHTMLDOMImplementation_tid, - HTMLDOMImplementation_iface_tids + HTMLDOMImplementation_iface_tids, + HTMLDOMImplementation_init_dispex_info }; HRESULT create_dom_implementation(HTMLDocumentNode *doc_node, IHTMLDOMImplementation **ret) diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js index 74e871e47f1..eeeb1c88430 100644 --- a/dlls/mshtml/tests/documentmode.js +++ b/dlls/mshtml/tests/documentmode.js @@ -364,6 +364,23 @@ sync_test("window_props", function() { test_exposed("console", v >= 10); }); +sync_test("domimpl_props", function() { + var domimpl = document.implementation; + function test_exposed(prop, expect) { + if(expect) + ok(prop in domimpl, prop + " not found in DOMImplementation."); + else + ok(!(prop in domimpl), prop + " found in DOMImplementation."); + } + + var v = document.documentMode; + + test_exposed("hasFeature", true); + test_exposed("createDocument", v >= 9); + test_exposed("createDocumentType", v >= 9); + test_exposed("createHTMLDocument", v >= 9); +}); + sync_test("xhr_props", function() { var xhr = new XMLHttpRequest();