[PATCH 0/7] MR10688: msxml3: Improvements to setAttribute().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/domdoc.c | 3 --- dlls/msxml3/tests/domdoc.c | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index 53d56a3866f..0011e6d1f79 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -630,9 +630,6 @@ static HRESULT WINAPI domdoc_cloneNode(IXMLDOMDocument3 *iface, VARIANT_BOOL dee TRACE("%p, %d, %p.\n", iface, deep, node); - if (!node) - return E_INVALIDARG; - return node_clone(doc->node, deep, node); } diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 440990a4c1b..e7d4545590d 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -5885,6 +5885,9 @@ static void test_cloneNode(void ) doc = create_document(&IID_IXMLDOMDocument2); + hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_FALSE, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + /* Shallow cloning with a DTD */ hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szEmailXML), &b); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 59 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index e7d4545590d..2e6d29eaf52 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -16929,7 +16929,9 @@ static void test_setAttribute(void) { IXMLDOMElement *element; IXMLDOMDocument *doc; + IXMLDOMNode *node; HRESULT hr; + VARIANT v; BSTR str; doc = create_document(&IID_IXMLDOMDocument); @@ -16960,7 +16962,35 @@ static void test_setAttribute(void) todo_wine ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_get_xml(element, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\"/>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + + IXMLDOMElement_Release(element); + + /* Same local name as existing namespace, different uri value */ + V_VT(&v) = VT_I1; + V_I1(&v) = NODE_ELEMENT; + hr = IXMLDOMDocument_createNode(doc, v, _bstr_("prefix:name"), _bstr_("uri"), &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void **)&element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMNode_Release(node); + + hr = IXMLDOMElement_setAttribute(element, _bstr_("prefix"), _variantbstr_("uri2")); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMElement_get_xml(element, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\" prefix=\"uri2\"/>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + IXMLDOMElement_Release(element); + IXMLDOMDocument_Release(doc); free_bstrs(); } @@ -16999,8 +17029,10 @@ static void test_createElement(void) static void test_default_namespace(void) { IXMLDOMElement *element, *element2; + IXMLDOMNamedNodeMap *map; IXMLDOMDocument *doc; IXMLDOMNode *node; + LONG length; HRESULT hr; VARIANT v; BSTR str; @@ -17019,6 +17051,10 @@ static void test_default_namespace(void) hr = IXMLDOMDocument_createElement(doc, _bstr_("e2"), &element); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:ns"), _variantbstr_("uri")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_setAttribute(element, _bstr_("attr"), _variantbstr_("value")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMDocument_createElement(doc, _bstr_("e3"), &element2); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); @@ -17028,7 +17064,8 @@ static void test_default_namespace(void) hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine - ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\"/></e1>"), "Unexpected xml %s.\n", debugstr_w(str)); + ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\" xmlns:ns=\"uri\" attr=\"value\"/></e1>"), + "Unexpected xml %s.\n", debugstr_w(str)); SysFreeString(str); hr = IXMLDOMElement_get_namespaceURI(element, &str); @@ -17040,13 +17077,31 @@ static void test_default_namespace(void) hr = IXMLDOMNode_get_xml(node, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine - ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\"><e3/></e2></e1>"), "Unexpected xml %s.\n", debugstr_w(str)); + ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\" xmlns:ns=\"uri\" attr=\"value\"><e3/></e2></e1>"), + "Unexpected xml %s.\n", debugstr_w(str)); SysFreeString(str); IXMLDOMNode_Release(node); IXMLDOMElement_Release(element2); IXMLDOMElement_Release(element); + + hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a xmlns=\"\" />"), NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocument_get_documentElement(doc, &element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_get_namespaceURI(element, &str); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMElement_get_attributes(element, &map); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMNamedNodeMap_get_length(map, &length); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(length == 1, "Unexpected length %ld.\n", length); + IXMLDOMNamedNodeMap_Release(map); + + IXMLDOMElement_Release(element); + IXMLDOMDocument_Release(doc); free_bstrs(); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/node.c | 12 +++++++++++- dlls/msxml3/tests/domdoc.c | 2 -- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 4d68d44e0b2..af78ce9ba9d 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -3442,6 +3442,13 @@ HRESULT node_set_attribute(struct domnode *node, IXMLDOMNode *attribute, IXMLDOM return S_OK; } +static bool is_namespace_definition_name(const struct parsed_name *name) +{ + if (!name->prefix && !wcscmp(name->local, L"xmlns")) + return true; + return name->prefix && !wcscmp(name->prefix, L"xmlns"); +} + HRESULT node_set_attribute_value(struct domnode *node, const WCHAR *name, const VARIANT *value) { struct parsed_name attr_name; @@ -3462,7 +3469,10 @@ HRESULT node_set_attribute_value(struct domnode *node, const WCHAR *name, const /* Check for conflict with element namespace. It's possible to have no uri set on element, while still having qualified name. */ - match = node->uri && is_same_namespace_prefix(node, attr_name.local) && !is_same_uri(node, attr_value); + match = node->uri + && is_namespace_definition_name(&attr_name) + && is_same_namespace_prefix(node, attr_name.local) + && !is_same_uri(node, attr_value); parsed_name_cleanup(&attr_name); if (match) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 2e6d29eaf52..d2c13badbef 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -16980,12 +16980,10 @@ static void test_setAttribute(void) IXMLDOMNode_Release(node); hr = IXMLDOMElement_setAttribute(element, _bstr_("prefix"), _variantbstr_("uri2")); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_xml(element, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\" prefix=\"uri2\"/>"), "Unexpected xml %s.\n", debugstr_w(str)); SysFreeString(str); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/node.c | 4 ++++ dlls/msxml3/tests/domdoc.c | 22 ++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index af78ce9ba9d..91e58e6ae9e 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -3491,6 +3491,10 @@ HRESULT node_set_attribute_value(struct domnode *node, const WCHAR *name, const hr = node_put_data(attr, attr_value); VariantClear(&v); + /* Allow setting namespace definition node once. */ + if (attr && is_namespace_definition(attr)) + attr->flags |= DOMNODE_READONLY_VALUE; + return hr; } diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index d2c13badbef..d0cead99689 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -16928,6 +16928,7 @@ static void test_document_reload(void) static void test_setAttribute(void) { IXMLDOMElement *element; + IXMLDOMAttribute *attr; IXMLDOMDocument *doc; IXMLDOMNode *node; HRESULT hr; @@ -16959,15 +16960,32 @@ static void test_setAttribute(void) SysFreeString(str); hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:prefix"), _variantbstr_("uri2")); - todo_wine ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); hr = IXMLDOMElement_get_xml(element, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\"/>"), "Unexpected xml %s.\n", debugstr_w(str)); SysFreeString(str); + hr = IXMLDOMElement_getAttributeNode(element, _bstr_("xmlns:prefix"), &attr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMAttribute_put_text(attr, _bstr_("uri3")); + ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr); + IXMLDOMAttribute_Release(attr); + + hr = IXMLDOMElement_setAttribute(element, _bstr_("attr1"), _variantbstr_("value")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMElement_getAttributeNode(element, _bstr_("attr1"), &attr); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMAttribute_put_text(attr, _bstr_("value2")); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMAttribute_Release(attr); + + hr = IXMLDOMElement_get_xml(element, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\" attr1=\"value2\"/>"), "Unexpected xml %s.\n", debugstr_w(str)); + SysFreeString(str); + IXMLDOMElement_Release(element); /* Same local name as existing namespace, different uri value */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Daniel Lehman <dlehman25@gmail.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index d0cead99689..84e5e2054da 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -14607,10 +14607,12 @@ static void test_put_text(void) IXMLDOMNamedNodeMap *map; IXMLDOMDocument2 *doc; IXMLDOMNode *node, *node2; + IXMLDOMText *text; VARIANT_BOOL b; BSTR str; const WCHAR *expected; HRESULT hr; + DOMNodeType type; doc = create_document(&IID_IXMLDOMDocument2); @@ -14763,6 +14765,64 @@ static void test_put_text(void) ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str)); SysFreeString(str); + IXMLDOMElement_Release(element); + IXMLDOMDocument2_Release(doc); + + /* test encoding */ + doc = create_document(&IID_IXMLDOMDocument2); + + b = VARIANT_FALSE; + str = SysAllocString(L"<?xml version='1.0' encoding='UTF-16'?>\n<esc><>& "'</esc>\n"); + hr = IXMLDOMDocument2_loadXML(doc, str, &b); + ok(hr == S_OK, "Unable to create instance hr %#lx.\n", hr); + SysFreeString(str); + + str = NULL; + hr = IXMLDOMDocument2_get_text(doc, &str); + + expected = L"<>&\n\"'"; + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str)); + SysFreeString(str); + + element = NULL; + hr = IXMLDOMDocument2_get_documentElement(doc, &element); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + str = SysAllocString(expected); + hr = IXMLDOMElement_put_text(element, str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(str); + + str = NULL; + hr = IXMLDOMDocument2_get_text(doc, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str)); + + node = NULL; + hr = IXMLDOMElement_get_firstChild(element, &node); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + type = -1; + hr = IXMLDOMNode_get_nodeType(node, &type); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(type == NODE_TEXT, "got %d\n", type); + + hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + str = SysAllocString(expected); + hr = IXMLDOMText_put_text(text, str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(str); + + str = NULL; + hr = IXMLDOMText_get_text(text, &str); + ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str)); + SysFreeString(str); + + IXMLDOMText_Release(text); + IXMLDOMNode_Release(node); IXMLDOMElement_Release(element); IXMLDOMDocument2_Release(doc); free_bstrs(); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 84e5e2054da..c430925c0d2 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -9650,6 +9650,7 @@ static void test_insertBefore(void) IXMLDOMAttribute *attr; IXMLDOMElement *elem1, *elem2, *elem3, *elem4, *elem5; IXMLDOMNode *node, *newnode, *cdata; + IXMLDOMText *text; HRESULT hr; VARIANT v; BSTR p; @@ -9750,6 +9751,20 @@ static void test_insertBefore(void) ok(node == NULL, "got %p\n", node); IXMLDOMNode_Release(newnode); + /* text to attribute */ + hr = IXMLDOMDocument_createTextNode(doc, _bstr_("text"), &text); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!!text, "Unexpected pointer %p.\n", text); + + V_VT(&v) = VT_NULL; + hr = IXMLDOMAttribute_insertBefore(attr, (IXMLDOMNode *)text, v, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMAttribute_get_text(attr, &p); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!wcscmp(p, L"text"), "Unexpected text %s.\n", debugstr_w(p)); + SysFreeString(p); + IXMLDOMText_Release(text); + /* cdata to attribute */ V_VT(&v) = VT_I4; V_I4(&v) = NODE_CDATA_SECTION; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 36 +++++++++++++++++++------ dlls/msxml6/tests/domdoc.c | 50 +++++++++++++++++++++++++++++++++++ dlls/msxml6/tests/saxreader.c | 1 - 3 files changed, 78 insertions(+), 9 deletions(-) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index c430925c0d2..eb6e25210c8 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -1512,14 +1512,6 @@ static void test_domdoc( void ) doc = create_document(&IID_IXMLDOMDocument); if (!doc) return; - check_interface(doc, &IID_IXMLDOMDocument, TRUE); - check_interface(doc, &IID_IPersistStreamInit, TRUE); - check_interface(doc, &IID_IObjectWithSite, TRUE); - check_interface(doc, &IID_IObjectSafety, TRUE); - check_interface(doc, &IID_IConnectionPointContainer, TRUE); - check_interface(doc, &IID_IDispatch, TRUE); - check_interface(doc, &IID_IDispatchEx, TRUE); - if (0) { /* crashes on native */ @@ -17255,6 +17247,33 @@ static void test_prohibitdtd(void) IXMLDOMDocument2_Release(doc); } +static void test_interfaces(void) +{ + IXMLDOMDocument *doc; + + doc = create_document(&IID_IXMLDOMDocument); + + check_interface(doc, &IID_IXMLDOMDocument, TRUE); + check_interface(doc, &IID_IPersistStreamInit, TRUE); + check_interface(doc, &IID_IObjectWithSite, TRUE); + check_interface(doc, &IID_IObjectSafety, TRUE); + check_interface(doc, &IID_IConnectionPointContainer, TRUE); + check_interface(doc, &IID_IDispatch, TRUE); + check_interface(doc, &IID_IDispatchEx, TRUE); + check_interface(doc, &IID_IUnknown, TRUE); + check_interface(doc, &IID_IPersistStream, TRUE); + check_interface(doc, &IID_ISequentialStream, FALSE); + check_interface(doc, &IID_IPersist, FALSE); +todo_wine +{ + check_interface(doc, &IID_IOleCommandTarget, TRUE); + check_interface(doc, &IID_IPersistMoniker, TRUE); + check_interface(doc, &IID_IProvideClassInfo, TRUE); + check_interface(doc, &IID_IStream, TRUE); +} + IXMLDOMDocument_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -17361,6 +17380,7 @@ START_TEST(domdoc) test_default_namespace(); test_prohibitdtd(); test_indent(); + test_interfaces(); if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager)) { diff --git a/dlls/msxml6/tests/domdoc.c b/dlls/msxml6/tests/domdoc.c index 8a10c7a29f8..8e9a327ddcc 100644 --- a/dlls/msxml6/tests/domdoc.c +++ b/dlls/msxml6/tests/domdoc.c @@ -32,10 +32,29 @@ #include "windows.h" #include "initguid.h" +#include "objsafe.h" +#include "docobj.h" +#include "dispex.h" + #include "msxml6.h" #include "wine/test.h" +#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c) +static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported) +{ + IUnknown *iface = iface_ptr; + HRESULT hr, expected_hr; + IUnknown *unk; + + expected_hr = supported ? S_OK : E_NOINTERFACE; + + hr = IUnknown_QueryInterface(iface, iid, (void **)&unk); + ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); +} + static const WCHAR email_xml[] = L"<?xml version=\"1.0\"?>" "<!DOCTYPE email ["\ @@ -598,6 +617,36 @@ static void test_prohibitdtd(void) IXMLDOMDocument2_Release(doc); } +static void test_interfaces(void) +{ + IXMLDOMDocument *doc; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, + &IID_IXMLDOMDocument, (void **)&doc); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + check_interface(doc, &IID_IXMLDOMDocument, TRUE); + check_interface(doc, &IID_IPersistStreamInit, TRUE); + check_interface(doc, &IID_IObjectWithSite, TRUE); + check_interface(doc, &IID_IObjectSafety, TRUE); + check_interface(doc, &IID_IConnectionPointContainer, TRUE); + check_interface(doc, &IID_IDispatch, TRUE); + check_interface(doc, &IID_IDispatchEx, TRUE); + check_interface(doc, &IID_IUnknown, TRUE); + check_interface(doc, &IID_IPersistStream, TRUE); + check_interface(doc, &IID_ISequentialStream, FALSE); + check_interface(doc, &IID_IPersist, FALSE); +todo_wine +{ + check_interface(doc, &IID_IOleCommandTarget, TRUE); + check_interface(doc, &IID_IPersistMoniker, TRUE); + check_interface(doc, &IID_IProvideClassInfo, TRUE); + check_interface(doc, &IID_IStream, TRUE); +} + IXMLDOMDocument_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -621,6 +670,7 @@ START_TEST(domdoc) test_get_parentNode(); test_normalize_attribute_values(); test_prohibitdtd(); + test_interfaces(); CoUninitialize(); } diff --git a/dlls/msxml6/tests/saxreader.c b/dlls/msxml6/tests/saxreader.c index 1f10ad9b929..3b850d775ce 100644 --- a/dlls/msxml6/tests/saxreader.c +++ b/dlls/msxml6/tests/saxreader.c @@ -29,7 +29,6 @@ #include "msxml6.h" #include "msxml6did.h" #include "ocidl.h" -#include "initguid.h" #include "dispex.h" #include "wine/test.h" -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
This merge request was approved by Nikolay Sivov. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10688
participants (3)
-
Daniel Lehman -
Nikolay Sivov -
Nikolay Sivov (@nsivov)