From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/doctype.c | 6 ++++-- dlls/msxml3/tests/domdoc.c | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/dlls/msxml3/doctype.c b/dlls/msxml3/doctype.c index 631ef18171b..a0c94339237 100644 --- a/dlls/msxml3/doctype.c +++ b/dlls/msxml3/doctype.c @@ -268,9 +268,11 @@ static HRESULT WINAPI domdoctype_hasChildNodes(IXMLDOMDocumentType *iface, VARIA static HRESULT WINAPI domdoctype_get_ownerDocument(IXMLDOMDocumentType *iface, IXMLDOMDocument **doc) { - FIXME("%p, %p: stub\n", iface, doc); + domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface); - return E_NOTIMPL; + TRACE("%p, %p.\n", iface, doc); + + return node_get_owner_document(doctype->node, doc); } static HRESULT WINAPI domdoctype_cloneNode(IXMLDOMDocumentType *iface, VARIANT_BOOL deep, IXMLDOMNode **node) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 665e0cfa954..bf32c5c88ac 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -8045,6 +8045,7 @@ static void test_get_ownerDocument(void) IXMLDOMDocument2 *doc, *doc_owner; IXMLDOMNode *node; IXMLDOMSchemaCollection *cache; + IXMLDOMDocumentType *doctype; VARIANT_BOOL b; VARIANT var; IXMLDOMElement *element; @@ -8178,12 +8179,26 @@ static void test_get_ownerDocument(void) IXMLDOMAttribute_Release(attr); IXMLDOMNodeList_Release(node_list); - IXMLDOMSchemaCollection_Release(cache); - IXMLDOMDocument_Release(doc1); IXMLDOMDocument_Release(doc2); IXMLDOMDocument_Release(doc3); IXMLDOMDocument2_Release(doc); IXMLDOMDocument2_Release(doc_owner); + + /* DTD node */ + hr = IXMLDOMDocument_loadXML(doc1, _bstr_(szEmailXML), NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_get_doctype(doc1, &doctype); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocumentType_get_ownerDocument(doctype, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IXMLDOMDocumentType_get_ownerDocument(doctype, &doc2); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IXMLDOMDocumentType_Release(doctype); + IXMLDOMDocument_Release(doc2); + + IXMLDOMSchemaCollection_Release(cache); + IXMLDOMDocument_Release(doc1); free_bstrs(); } @@ -14679,6 +14694,7 @@ static void test_get_parentNode(void) IXMLDOMDocumentType_Release(doctype); IXMLDOMDocument_Release(doc); + free_bstrs(); } static void test_removeAttributeNode(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10664